From ba7405e522ad803525a28f473c4e1b16df94d3e9 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Sat, 5 Dec 2009 22:53:04 +0000 Subject: Make the alloc_data and k5alloc convenience functions work if the caller requests zero bytes, by allocating one byte instead. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23448 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/k5-int.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/include/k5-int.h b/src/include/k5-int.h index cbe0fd9..04e3310 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -2811,7 +2811,8 @@ string2data(char *str) static inline krb5_error_code alloc_data(krb5_data *data, unsigned int len) { - char *ptr = (char *) calloc(len, 1); + /* Allocate at least one byte since zero-byte allocs may return NULL. */ + char *ptr = (char *) calloc((len > 0) ? len : 1, 1); if (ptr == NULL) return ENOMEM; @@ -2837,11 +2838,12 @@ authdata_eq(krb5_authdata a1, krb5_authdata a2) /* Allocate zeroed memory; set *code to 0 on success or ENOMEM on failure. */ static inline void * -k5alloc(size_t size, krb5_error_code *code) +k5alloc(size_t len, krb5_error_code *code) { void *ptr; - ptr = calloc(size, 1); + /* Allocate at least one byte since zero-byte allocs may return NULL. */ + ptr = calloc((len > 0) ? len : 1, 1); *code = (ptr == NULL) ? ENOMEM : 0; return ptr; } -- cgit v1.1