aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sfxge/common/efx_lic.c
diff options
context:
space:
mode:
authorAndrew Rybchenko <arybchik@FreeBSD.org>2016-05-16 07:12:04 +0000
committerAndrew Rybchenko <arybchik@FreeBSD.org>2016-05-16 07:12:04 +0000
commit95c6a8211c62fb612ed5633ac92e30a28ad5dbfd (patch)
tree8df28c9b65ee479a128960390a35f5c5444981cb /sys/dev/sfxge/common/efx_lic.c
parentdfb5178f9bbdc1886adf41455c0380b48d221002 (diff)
downloadsrc-95c6a8211c62fb612ed5633ac92e30a28ad5dbfd.tar.gz
src-95c6a8211c62fb612ed5633ac92e30a28ad5dbfd.zip
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
Notes
Notes: svn path=/head/; revision=299911
Diffstat (limited to 'sys/dev/sfxge/common/efx_lic.c')
-rw-r--r--sys/dev/sfxge/common/efx_lic.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/sfxge/common/efx_lic.c b/sys/dev/sfxge/common/efx_lic.c
index 24e6c72e6d24..64fdb970bf68 100644
--- a/sys/dev/sfxge/common/efx_lic.c
+++ b/sys/dev/sfxge/common/efx_lic.c
@@ -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);