diff options
Diffstat (limited to 'src/lib/krb5/asn.1/asn1buf.c')
-rw-r--r-- | src/lib/krb5/asn.1/asn1buf.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/krb5/asn.1/asn1buf.c b/src/lib/krb5/asn.1/asn1buf.c index cc8cf71156..393014dddf 100644 --- a/src/lib/krb5/asn.1/asn1buf.c +++ b/src/lib/krb5/asn.1/asn1buf.c @@ -332,11 +332,15 @@ asn1_error_code asn1buf_expand(DECLARG(asn1buf *, buf), if(buf->base == NULL) bound_offset = -1; else bound_offset = buf->bound - buf->base; - - buf->base = realloc(buf->base, - (asn1buf_size(buf)+(inc>STANDARD_INCREMENT ? - inc : STANDARD_INCREMENT)) - * sizeof(asn1_octet)); + if (buf->base == NULL) + buf->base = malloc((asn1buf_size(buf)+(inc>STANDARD_INCREMENT ? + inc : STANDARD_INCREMENT)) + * sizeof(asn1_octet)); + else + buf->base = realloc(buf->base, + (asn1buf_size(buf)+(inc>STANDARD_INCREMENT ? + inc : STANDARD_INCREMENT)) + * sizeof(asn1_octet)); if(buf->base == NULL) return ENOMEM; buf->bound = (buf->base) + bound_offset + inc; buf->next = (buf->base) + next_offset; |