summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2011-10-14 14:37:14 +0000
committerSam Hartman <hartmans@mit.edu>2011-10-14 14:37:14 +0000
commit8fd620fe538f33164e4faa395573d6739aa829a2 (patch)
tree3b22b7d52f3c20bf595f6422c8813d24131c5962 /src
parente28c59c89009203ce3fb71162ea86a86253383d6 (diff)
downloadkrb5-8fd620fe538f33164e4faa395573d6739aa829a2.tar.gz
krb5-8fd620fe538f33164e4faa395573d6739aa829a2.tar.xz
krb5-8fd620fe538f33164e4faa395573d6739aa829a2.zip
Simplify gss_indicate_mechs() by using generic_gss_copy_oid_set
...instead of hand-duplicating all the logic therein. Also makes the switch to using gssalloc functions with oid_sets easier. Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com> git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25329 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/gssapi/mechglue/g_initialize.c55
1 files changed, 3 insertions, 52 deletions
diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c
index 603387c7eb..202ad8eef6 100644
--- a/src/lib/gssapi/mechglue/g_initialize.c
+++ b/src/lib/gssapi/mechglue/g_initialize.c
@@ -212,9 +212,7 @@ gss_OID_set *mechSet_out;
{
char *fileName;
struct stat fileInfo;
- unsigned int i, j;
- gss_OID curItem;
- gss_OID_set mechSet;
+ OM_uint32 status;
/* Initialize outputs. */
@@ -246,64 +244,17 @@ gss_OID_set *mechSet_out;
return GSS_S_FAILURE;
/*
- * the mech set is created and it is up to date
- * so just copy it to caller
- */
- if ((mechSet =
- (gss_OID_set) malloc(sizeof (gss_OID_set_desc))) == NULL)
- {
- return (GSS_S_FAILURE);
- }
-
- /*
* need to lock the g_mechSet in case someone tries to update it while
* I'm copying it.
*/
*minorStatus = k5_mutex_lock(&g_mechSetLock);
if (*minorStatus) {
- free(mechSet);
return GSS_S_FAILURE;
}
- /* allocate space for the oid structures */
- if ((mechSet->elements =
- (void*) calloc(g_mechSet.count, sizeof (gss_OID_desc)))
- == NULL)
- {
- (void) k5_mutex_unlock(&g_mechSetLock);
- free(mechSet);
- return (GSS_S_FAILURE);
- }
-
- /* now copy the oid structures */
- (void) memcpy(mechSet->elements, g_mechSet.elements,
- g_mechSet.count * sizeof (gss_OID_desc));
-
- mechSet->count = g_mechSet.count;
-
- /* still need to copy each of the oid elements arrays */
- for (i = 0; i < mechSet->count; i++) {
- curItem = &(mechSet->elements[i]);
- curItem->elements =
- (void *) malloc(g_mechSet.elements[i].length);
- if (curItem->elements == NULL) {
- (void) k5_mutex_unlock(&g_mechSetLock);
- /*
- * must still free the allocated elements for
- * each allocated gss_OID_desc
- */
- for (j = 0; j < i; j++) {
- free(mechSet->elements[j].elements);
- }
- free(mechSet->elements);
- free(mechSet);
- return (GSS_S_FAILURE);
- }
- g_OID_copy(curItem, &g_mechSet.elements[i]);
- }
+ status = generic_gss_copy_oid_set(minorStatus, &g_mechSet, mechSet_out);
(void) k5_mutex_unlock(&g_mechSetLock);
- *mechSet_out = mechSet;
- return (GSS_S_COMPLETE);
+ return (status);
} /* gss_indicate_mechs */