summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/asn.1/asn1buf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/krb5/asn.1/asn1buf.c')
-rw-r--r--src/lib/krb5/asn.1/asn1buf.c14
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;