krb5 commit: Add k5calloc internal helper function

Greg Hudson ghudson at MIT.EDU
Mon Jul 15 00:43:06 EDT 2013


https://github.com/krb5/krb5/commit/90f9f6f6708baff4de2162c5eb754bb4bc557845
commit 90f9f6f6708baff4de2162c5eb754bb4bc557845
Author: Greg Hudson <ghudson at mit.edu>
Date:   Thu Jul 11 19:47:33 2013 -0400

    Add k5calloc internal helper function
    
    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 |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/include/k5-int.h b/src/include/k5-int.h
index 63e0e8a..e820b1c 100644
--- a/src/include/k5-int.h
+++ b/src/include/k5-int.h
@@ -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)


More information about the cvs-krb5 mailing list