s4:heimdal: import lorikeet-heimdal-201001120029 (commit a5e675fed7c5db8a7370b77ed0bf...
[sfrench/samba-autobuild/.git] / source4 / heimdal / lib / asn1 / der_get.c
index 5a062fb339e8a4676287a15318ea85e69c1b73b1..aee565040fd61168d76b9b17249f7244502c5aee 100644 (file)
@@ -305,7 +305,7 @@ der_get_octet_string_ber (const unsigned char *p, size_t len,
            void *ptr;
 
            ptr = realloc(data->data, data->length + datalen);
-           if (ptr == NULL && data->length + datalen != 0) {
+           if (ptr == NULL) {
                e = ENOMEM;
                goto out;
            }
@@ -354,23 +354,21 @@ der_get_heim_integer (const unsigned char *p, size_t len,
            p++;
            data->length--;
        }
-       if (data->length) {
-           data->data = malloc(data->length);
-           if (data->data == NULL) {
-               data->length = 0;
-               if (size)
-                   *size = 0;
-               return ENOMEM;
-           }
-           q = &((unsigned char*)data->data)[data->length - 1];
-           p += data->length - 1;
-           while (q >= (unsigned char*)data->data) {
-               *q = *p ^ 0xff;
-               if (carry)
-                   carry = !++*q;
-               p--;
-               q--;
-           }
+       data->data = malloc(data->length);
+       if (data->data == NULL) {
+           data->length = 0;
+           if (size)
+               *size = 0;
+           return ENOMEM;
+       }
+       q = &((unsigned char*)data->data)[data->length - 1];
+       p += data->length - 1;
+       while (q >= (unsigned char*)data->data) {
+           *q = *p ^ 0xff;
+           if (carry)
+               carry = !++*q;
+           p--;
+           q--;
        }
     } else {
        data->negative = 0;