Add convenience functions zapfree (test for null, zap, free) and
authorGreg Hudson <ghudson@mit.edu>
Sat, 3 Oct 2009 14:46:54 +0000 (14:46 +0000)
committerGreg Hudson <ghudson@mit.edu>
Sat, 3 Oct 2009 14:46:54 +0000 (14:46 +0000)
k5alloc (allocate memory, set a krb5_error_code result) to k5-int.h.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22838 dc483132-0cff-0310-8789-dd5450dbe970

src/include/k5-int.h

index 1cb2fdb92583fa1e02f745dd59f802febdbd5f45..1c8a1c92d86c24c1daf619021072c5ea391d52b9 100644 (file)
@@ -776,6 +776,16 @@ static inline void krb5int_zap_data(void *ptr, size_t len)
 #endif /* WIN32 */
 #define zap(p,l) krb5int_zap_data(p,l)
 
+/* Convenience function: zap and free ptr if it is non-NULL. */
+static inline void
+zapfree(void *ptr, size_t len)
+{
+    if (ptr != NULL) {
+       zap(ptr, len);
+       free(ptr);
+    }
+}
+
 /* A definition of init_state for DES based encryption systems.
  * sets up an 8-byte IV of all zeros
  */
@@ -2823,6 +2833,17 @@ static inline int authdata_eq (krb5_authdata a1, krb5_authdata a2)
            && !memcmp(a1.contents, a2.contents, a1.length));
 }
 
+/* Allocate zeroed memory; set *code to 0 on success or ENOMEM on failure. */
+static inline void *
+k5alloc(size_t size, krb5_error_code *code)
+{
+    void *ptr;
+
+    ptr = calloc(size, 1);
+    *code = (ptr == NULL) ? ENOMEM : 0;
+    return ptr;
+}
+
 krb5_error_code KRB5_CALLCONV
 krb5int_pac_sign(krb5_context context,
                 krb5_pac pac,