summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi/generic
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2011-10-14 14:40:10 +0000
committerSam Hartman <hartmans@mit.edu>2011-10-14 14:40:10 +0000
commit800358b1790ef82710af0b6021c6ff2dca2b0de7 (patch)
tree49f106379347bdf032708c5f8f13b6820ca220d3 /src/lib/gssapi/generic
parent3ab619b8ffa9337498e49caa8e75f6e03a56e71c (diff)
downloadkrb5-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.c20
-rw-r--r--src/lib/gssapi/generic/rel_buffer.c2
-rw-r--r--src/lib/gssapi/generic/rel_oid_set.c6
-rw-r--r--src/lib/gssapi/generic/util_buffer.c2
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 = &copy->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);
}