summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1994-09-29 18:44:51 +0000
committerTheodore Tso <tytso@mit.edu>1994-09-29 18:44:51 +0000
commitc17c99275fdf90b3513833182589be01af6b2148 (patch)
tree2f4851eb32985c537555d43fc1f0dc4b2e103b3a /src/lib
parentb2caf4b17818398c789a51032d0f90704c182ebf (diff)
Always fill in a NULL for a zero-length char string or octet string in
asn1_remove_charstring or asn1_remove_octetstring. This means we do the same thing no matter whether the system returns NULL for malloc(0) or not. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4376 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/asn.1/ChangeLog8
-rw-r--r--src/lib/krb5/asn.1/asn1buf.c15
2 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/krb5/asn.1/ChangeLog b/src/lib/krb5/asn.1/ChangeLog
index 139d5bfbd..d4883a35e 100644
--- a/src/lib/krb5/asn.1/ChangeLog
+++ b/src/lib/krb5/asn.1/ChangeLog
@@ -1,3 +1,11 @@
+Thu Sep 29 14:26:34 1994 Theodore Y. Ts'o (tytso@dcl)
+
+ * asn1buf.c (asn1buf_remove_octetstring, asn1buf_remove_charstring):
+ If the length is zero, don't call calloc(0,1); instead
+ return a NULL pointer. This way, we get consistent
+ behavior even on systems where malloc(0) returns a
+ non-null pointer.
+
Tue Sep 27 23:31:50 1994 Theodore Y. Ts'o (tytso@dcl)
* krb5_encode.c (encode_krb5_enc_kdc_rep_part): = should have been
diff --git a/src/lib/krb5/asn.1/asn1buf.c b/src/lib/krb5/asn.1/asn1buf.c
index 393014ddd..81c7df309 100644
--- a/src/lib/krb5/asn.1/asn1buf.c
+++ b/src/lib/krb5/asn.1/asn1buf.c
@@ -173,8 +173,13 @@ asn1_error_code asn1buf_remove_octetstring(DECLARG(asn1buf *, buf),
int i;
if(buf->next + len - 1 > buf->bound) return ASN1_OVERRUN;
+ if (len == 0) {
+ *s = 0;
+ return 0;
+ }
*s = (asn1_octet*)calloc(len,sizeof(asn1_octet));
- if((*s == NULL) && len) return ENOMEM;
+ if (*s == NULL)
+ return ENOMEM;
for(i=0; i<len; i++)
(*s)[i] = (asn1_octet)(buf->next)[i];
buf->next += len;
@@ -190,9 +195,13 @@ asn1_error_code asn1buf_remove_charstring(DECLARG(asn1buf *, buf),
{
int i;
- if(buf->next + len - 1 > buf->bound) return ASN1_OVERRUN;
+ if (buf->next + len - 1 > buf->bound) return ASN1_OVERRUN;
+ if (len == 0) {
+ *s = 0;
+ return 0;
+ }
*s = (char*)calloc(len,sizeof(char));
- if((*s == NULL) && len) return ENOMEM;
+ if (*s == NULL) return ENOMEM;
for(i=0; i<len; i++)
(*s)[i] = (char)(buf->next)[i];
buf->next += len;