[HEIMDAL-646] malloc(0) checks for AIX
This commit is contained in:
@@ -305,7 +305,7 @@ der_get_octet_string_ber (const unsigned char *p, size_t len,
|
|||||||
void *ptr;
|
void *ptr;
|
||||||
|
|
||||||
ptr = realloc(data->data, data->length + datalen);
|
ptr = realloc(data->data, data->length + datalen);
|
||||||
if (ptr == NULL) {
|
if (ptr == NULL && data->length + datalen != 0) {
|
||||||
e = ENOMEM;
|
e = ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@@ -354,21 +354,23 @@ der_get_heim_integer (const unsigned char *p, size_t len,
|
|||||||
p++;
|
p++;
|
||||||
data->length--;
|
data->length--;
|
||||||
}
|
}
|
||||||
data->data = malloc(data->length);
|
if (data->length) {
|
||||||
if (data->data == NULL) {
|
data->data = malloc(data->length);
|
||||||
data->length = 0;
|
if (data->data == NULL) {
|
||||||
if (size)
|
data->length = 0;
|
||||||
*size = 0;
|
if (size)
|
||||||
return ENOMEM;
|
*size = 0;
|
||||||
}
|
return ENOMEM;
|
||||||
q = &((unsigned char*)data->data)[data->length - 1];
|
}
|
||||||
p += data->length - 1;
|
q = &((unsigned char*)data->data)[data->length - 1];
|
||||||
while (q >= (unsigned char*)data->data) {
|
p += data->length - 1;
|
||||||
*q = *p ^ 0xff;
|
while (q >= (unsigned char*)data->data) {
|
||||||
if (carry)
|
*q = *p ^ 0xff;
|
||||||
carry = !++*q;
|
if (carry)
|
||||||
p--;
|
carry = !++*q;
|
||||||
q--;
|
p--;
|
||||||
|
q--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data->negative = 0;
|
data->negative = 0;
|
||||||
|
Reference in New Issue
Block a user