diff options
| author | Sam Hartman <hartmans@mit.edu> | 2011-10-14 14:40:10 +0000 |
|---|---|---|
| committer | Sam Hartman <hartmans@mit.edu> | 2011-10-14 14:40:10 +0000 |
| commit | 800358b1790ef82710af0b6021c6ff2dca2b0de7 (patch) | |
| tree | 49f106379347bdf032708c5f8f13b6820ca220d3 /src/lib/gssapi/generic | |
| parent | 3ab619b8ffa9337498e49caa8e75f6e03a56e71c (diff) | |
| download | krb5-800358b1790ef82710af0b6021c6ff2dca2b0de7.tar.gz krb5-800358b1790ef82710af0b6021c6ff2dca2b0de7.tar.xz krb5-800358b1790ef82710af0b6021c6ff2dca2b0de7.zip | |
Use gssalloc memory management where appropriate
gss_buffer_t may be freed in a different module from where they
are allocated so it is not safe to use strdup/malloc/calloc/free.
similarly, gss_OID_set need to use gssalloc functions.
Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com>
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25332 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi/generic')
| -rw-r--r-- | src/lib/gssapi/generic/oid_ops.c | 20 | ||||
| -rw-r--r-- | src/lib/gssapi/generic/rel_buffer.c | 2 | ||||
| -rw-r--r-- | src/lib/gssapi/generic/rel_oid_set.c | 6 | ||||
| -rw-r--r-- | src/lib/gssapi/generic/util_buffer.c | 2 |
4 files changed, 14 insertions, 16 deletions
diff --git a/src/lib/gssapi/generic/oid_ops.c b/src/lib/gssapi/generic/oid_ops.c index c42354295..f507ccdc1 100644 --- a/src/lib/gssapi/generic/oid_ops.c +++ b/src/lib/gssapi/generic/oid_ops.c @@ -129,7 +129,7 @@ generic_gss_create_empty_oid_set(OM_uint32 *minor_status, gss_OID_set *oid_set) { *minor_status = 0; - if ((*oid_set = (gss_OID_set) malloc(sizeof(gss_OID_set_desc)))) { + if ((*oid_set = (gss_OID_set) gssalloc_malloc(sizeof(gss_OID_set_desc)))) { memset(*oid_set, 0, sizeof(gss_OID_set_desc)); return(GSS_S_COMPLETE); } @@ -155,7 +155,7 @@ generic_gss_add_oid_set_member(OM_uint32 *minor_status, elist = (*oid_set)->elements; /* Get an enlarged copy of the array */ - if (((*oid_set)->elements = (gss_OID) malloc(((*oid_set)->count+1) * + if (((*oid_set)->elements = (gss_OID) gssalloc_malloc(((*oid_set)->count+1) * sizeof(gss_OID_desc)))) { /* Copy in the old junk */ if (elist) @@ -166,7 +166,7 @@ generic_gss_add_oid_set_member(OM_uint32 *minor_status, /* Duplicate the input element */ lastel = &(*oid_set)->elements[(*oid_set)->count]; if ((lastel->elements = - (void *) malloc((size_t) member_oid->length))) { + (void *) gssalloc_malloc((size_t) member_oid->length))) { /* Success - copy elements */ memcpy(lastel->elements, member_oid->elements, (size_t) member_oid->length); @@ -176,12 +176,12 @@ generic_gss_add_oid_set_member(OM_uint32 *minor_status, /* Update count */ (*oid_set)->count++; if (elist) - free(elist); + gssalloc_free(elist); *minor_status = 0; return(GSS_S_COMPLETE); } else - free((*oid_set)->elements); + gssalloc_free((*oid_set)->elements); } /* Failure - restore old contents of list */ (*oid_set)->elements = elist; @@ -270,9 +270,7 @@ generic_gss_oid_to_str(OM_uint32 *minor_status, *minor_status = ENOMEM; return(GSS_S_FAILURE); } - oid_str->length = krb5int_buf_len(&buf)+1; - oid_str->value = (void *) bp; - return(GSS_S_COMPLETE); + return k5buf_to_gss(minor_status, &buf, oid_str); } OM_uint32 @@ -517,13 +515,13 @@ generic_gss_copy_oid_set(OM_uint32 *minor_status, if (new_oidset == NULL) return (GSS_S_CALL_INACCESSIBLE_WRITE); - if ((copy = (gss_OID_set_desc *) calloc(1, sizeof (*copy))) == NULL) { + if ((copy = (gss_OID_set_desc *) gssalloc_calloc(1, sizeof (*copy))) == NULL) { major = GSS_S_FAILURE; goto done; } if ((copy->elements = (gss_OID_desc *) - calloc(oidset->count, sizeof (*copy->elements))) == NULL) { + gssalloc_calloc(oidset->count, sizeof (*copy->elements))) == NULL) { major = GSS_S_FAILURE; goto done; } @@ -533,7 +531,7 @@ generic_gss_copy_oid_set(OM_uint32 *minor_status, gss_OID_desc *out = ©->elements[i]; gss_OID_desc *in = &oidset->elements[i]; - if ((out->elements = (void *) malloc(in->length)) == NULL) { + if ((out->elements = (void *) gssalloc_malloc(in->length)) == NULL) { major = GSS_S_FAILURE; goto done; } diff --git a/src/lib/gssapi/generic/rel_buffer.c b/src/lib/gssapi/generic/rel_buffer.c index fb6712363..44dc98157 100644 --- a/src/lib/gssapi/generic/rel_buffer.c +++ b/src/lib/gssapi/generic/rel_buffer.c @@ -48,7 +48,7 @@ generic_gss_release_buffer( return(GSS_S_COMPLETE); if (buffer->value) { - free(buffer->value); + gssalloc_free(buffer->value); buffer->length = 0; buffer->value = NULL; } diff --git a/src/lib/gssapi/generic/rel_oid_set.c b/src/lib/gssapi/generic/rel_oid_set.c index 61c15cdab..954542e40 100644 --- a/src/lib/gssapi/generic/rel_oid_set.c +++ b/src/lib/gssapi/generic/rel_oid_set.c @@ -50,10 +50,10 @@ generic_gss_release_oid_set( return(GSS_S_COMPLETE); for (i=0; i<(*set)->count; i++) - free((*set)->elements[i].elements); + gssalloc_free((*set)->elements[i].elements); - free((*set)->elements); - free(*set); + gssalloc_free((*set)->elements); + gssalloc_free(*set); *set = GSS_C_NULL_OID_SET; diff --git a/src/lib/gssapi/generic/util_buffer.c b/src/lib/gssapi/generic/util_buffer.c index 81d86fc76..da2d83291 100644 --- a/src/lib/gssapi/generic/util_buffer.c +++ b/src/lib/gssapi/generic/util_buffer.c @@ -39,7 +39,7 @@ int g_make_string_buffer(const char *str, gss_buffer_t buffer) buffer->length = strlen(str); - if ((buffer->value = strdup(str)) == NULL) { + if ((buffer->value = gssalloc_strdup(str)) == NULL) { buffer->length = 0; return(0); } |
