svn commit: r299911 - head/sys/dev/sfxge/common
Andrew Rybchenko
arybchik at FreeBSD.org
Mon May 16 07:12:05 UTC 2016
Author: arybchik
Date: Mon May 16 07:12:04 2016
New Revision: 299911
URL: https://svnweb.freebsd.org/changeset/base/299911
Log:
sfxge(4): fix license validation check for V3 licenses
Length consistency checks were failing for ECC hashes.
Submitted by: Richard Houldsworth <rhouldsworth at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
MFC after: 1 week
Modified:
head/sys/dev/sfxge/common/efx_lic.c
Modified: head/sys/dev/sfxge/common/efx_lic.c
==============================================================================
--- head/sys/dev/sfxge/common/efx_lic.c Mon May 16 07:00:49 2016 (r299910)
+++ head/sys/dev/sfxge/common/efx_lic.c Mon May 16 07:12:04 2016 (r299911)
@@ -1103,7 +1103,6 @@ fail1:
/* V3 format uses Huntington TLV format partition. See SF-108797-SW */
#define EFX_LICENSE_V3_KEY_LENGTH_MIN (64)
#define EFX_LICENSE_V3_KEY_LENGTH_MAX (160)
-#define EFX_LICENSE_V3_HASH_LENGTH (64)
__checkReturn efx_rc_t
efx_lic_v3_find_start(
@@ -1169,16 +1168,17 @@ efx_lic_v3_validate_key(
goto fail1;
}
- key_type = ((uint8_t*)keyp)[0];
- key_length = ((uint8_t*)keyp)[1] + EFX_LICENSE_V3_HASH_LENGTH;
-
- if(key_length > EFX_LICENSE_V3_KEY_LENGTH_MAX) {
+ if (length > EFX_LICENSE_V3_KEY_LENGTH_MAX) {
goto fail2;
}
+
+ key_type = ((uint8_t*)keyp)[0];
+ key_length = ((uint8_t*)keyp)[1];
+
if (key_type < 3) {
goto fail3;
}
- if (key_length != length) {
+ if (key_length > length) {
goto fail4;
}
return (B_TRUE);
More information about the svn-src-all
mailing list