]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_smime/lib/cmscipher.c
Security-59306.120.7.tar.gz
[apple/security.git] / OSX / libsecurity_smime / lib / cmscipher.c
index a00168737d2c6ec65560502e48e90fd96e1f69fb..d511920ace52f879b16d1b477e99afb8f3a0060c 100644 (file)
@@ -102,9 +102,11 @@ DER_GetInteger(SECItem *it)
     unsigned char *cp = it->Data;
     unsigned long overflow = 0x1ffUL << (((sizeof(ival) - 1) * 8) - 1);
     unsigned long ofloinit;
+    bool isNegative = false;
 
-    if (*cp & 0x80)
-        ival = -1L;
+    if (*cp & 0x80) {
+        isNegative = true;
+    }
     ofloinit = ival & overflow;
 
     while (len) {
@@ -119,6 +121,10 @@ DER_GetInteger(SECItem *it)
         ival |= *cp++;
         --len;
     }
+
+    if (isNegative) {
+        ival *= -1L;
+    }
     return ival;
 }