]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Add k5calloc internal helper function
authorGreg Hudson <ghudson@mit.edu>
Thu, 11 Jul 2013 23:47:33 +0000 (19:47 -0400)
committerGreg Hudson <ghudson@mit.edu>
Thu, 11 Jul 2013 23:47:33 +0000 (19:47 -0400)
Letting calloc() do multiplication helps avoid overflow bugs, so
provide an internal k5calloc() helper which accepts both calloc
arguments, and reimplement k5alloc() in terms of it.

src/include/k5-int.h

index 63e0e8a32e04881e939a0bb6d06134d02a6ae129..e820b1ca46e973bc7449c794ede2e41ffc83f90c 100644 (file)
@@ -2182,16 +2182,23 @@ 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 len, krb5_error_code *code)
+k5calloc(size_t nmemb, size_t size, krb5_error_code *code)
 {
     void *ptr;
 
     /* Allocate at least one byte since zero-byte allocs may return NULL. */
-    ptr = calloc((len > 0) ? len : 1, 1);
+    ptr = calloc(nmemb ? nmemb : 1, size ? size : 1);
     *code = (ptr == NULL) ? ENOMEM : 0;
     return ptr;
 }
 
+/* Allocate zeroed memory; set *code to 0 on success or ENOMEM on failure. */
+static inline void *
+k5alloc(size_t size, krb5_error_code *code)
+{
+    return k5calloc(1, size, code);
+}
+
 /* Return a copy of the len bytes of memory at in; set *code to 0 or ENOMEM. */
 static inline void *
 k5memdup(const void *in, size_t len, krb5_error_code *code)