summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmf/ber_der/common/decode.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libkmf/ber_der/common/decode.c')
-rw-r--r--usr/src/lib/libkmf/ber_der/common/decode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/usr/src/lib/libkmf/ber_der/common/decode.c b/usr/src/lib/libkmf/ber_der/common/decode.c
index 459c49fdbe..cdae8d84a9 100644
--- a/usr/src/lib/libkmf/ber_der/common/decode.c
+++ b/usr/src/lib/libkmf/ber_der/common/decode.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
@@ -345,10 +345,10 @@ ber_get_bigint(BerElement *ber, struct berval **bv)
(*bv)->bv_len = len;
- /* If DER encoding, strip leading 0's */
+ /* If DER encoding, strip leading 0's if high-order bit is set */
if (ber->ber_options & KMFBER_OPT_USE_DER) {
char *p = (*bv)->bv_val;
- while ((*p == 0x00) && ((*bv)->bv_len > 0)) {
+ while ((*p == 0x00) && ((*bv)->bv_len > 0) && (p[1] & 0x80)) {
p++;
(*bv)->bv_len--;
}