summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-07-11 19:47:33 -0400
committerGreg Hudson <ghudson@mit.edu>2013-07-11 19:47:33 -0400
commit90f9f6f6708baff4de2162c5eb754bb4bc557845 (patch)
tree979d2338d979a39bfed9720fa9cea94f7e823483 /src
parentf6cb089daed2615d0b1594d7ccc20d617eb374eb (diff)
downloadkrb5-90f9f6f6708baff4de2162c5eb754bb4bc557845.tar.gz
krb5-90f9f6f6708baff4de2162c5eb754bb4bc557845.tar.xz
krb5-90f9f6f6708baff4de2162c5eb754bb4bc557845.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/include/k5-int.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/include/k5-int.h b/src/include/k5-int.h
index 63e0e8a32e..e820b1ca46 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)