From: Greg Hudson Date: Sat, 11 Aug 2012 04:13:05 +0000 (-0400) Subject: Use gssalloc in more parts of GSSAPI X-Git-Tag: krb5-1.11-alpha1~330 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b0edf38aafe3a365821cae4874e4608f95e28896;p=thirdparty%2Fkrb5.git Use gssalloc in more parts of GSSAPI Fix some GSSAPI buffer allocations which were missed in 800358b1790ef82710af0b6021c6ff2dca2b0de7: gss_export_sec_context, gss_display_name, and IAKERB and SPNEGO token construction. ticket: 7233 (new) tags: pullup --- diff --git a/src/lib/gssapi/krb5/export_sec_context.c b/src/lib/gssapi/krb5/export_sec_context.c index cdd20bd91f..18a3a34cf6 100644 --- a/src/lib/gssapi/krb5/export_sec_context.c +++ b/src/lib/gssapi/krb5/export_sec_context.c @@ -57,7 +57,7 @@ krb5_gss_export_sec_context(minor_status, context_handle, interprocess_token) goto error_out; /* Allocate the buffer */ - if ((obuffer = (krb5_octet *) xmalloc(bufsize)) == NULL) { + if ((obuffer = gssalloc_malloc(bufsize)) == NULL) { kret = ENOMEM; goto error_out; } diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c index 2564276a67..8c6a0823f1 100644 --- a/src/lib/gssapi/krb5/iakerb.c +++ b/src/lib/gssapi/krb5/iakerb.c @@ -286,9 +286,11 @@ iakerb_make_token(iakerb_ctx_id_t ctx, else tokenSize = 2 + data->length; - token->value = q = k5alloc(tokenSize, &code); - if (code != 0) + token->value = q = gssalloc_malloc(tokenSize); + if (q == NULL) { + code = ENOMEM; goto cleanup; + } token->length = tokenSize; if (initialContextToken) { diff --git a/src/lib/gssapi/mechglue/g_dsp_name.c b/src/lib/gssapi/mechglue/g_dsp_name.c index 2540f21c08..825bf4d58b 100644 --- a/src/lib/gssapi/mechglue/g_dsp_name.c +++ b/src/lib/gssapi/mechglue/g_dsp_name.c @@ -119,7 +119,7 @@ gss_OID * output_name_type; } if ((output_name_buffer->value = - malloc(union_name->external_name->length + 1)) == NULL) { + gssalloc_malloc(union_name->external_name->length + 1)) == NULL) { if (output_name_type && *output_name_type != GSS_C_NULL_OID) { (void) generic_gss_release_oid(minor_status, output_name_type); diff --git a/src/lib/gssapi/mechglue/g_glue.c b/src/lib/gssapi/mechglue/g_glue.c index a9b6f3502f..e9ff4c8075 100644 --- a/src/lib/gssapi/mechglue/g_glue.c +++ b/src/lib/gssapi/mechglue/g_glue.c @@ -472,7 +472,7 @@ OM_uint32 gssint_export_internal_name(minor_status, mech_type, mechOidTagLen + mechOidDERLen + mech_type->length + nameLenLen + dispName.length; - if ((name_buf->value = (void*)malloc(name_buf->length)) == + if ((name_buf->value = (void*)gssalloc_malloc(name_buf->length)) == (void*)NULL) { name_buf->length = 0; (void) gss_release_buffer(&status, &dispName); diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c index c5c995b999..e207d276c9 100644 --- a/src/lib/gssapi/spnego/spnego_mech.c +++ b/src/lib/gssapi/spnego/spnego_mech.c @@ -1207,7 +1207,7 @@ make_NegHints(OM_uint32 *minor_status, tlen += 1 + gssint_der_length_size(hintNameSize); negHintsSize = tlen; - t = (unsigned char *)malloc(tlen); + t = gssalloc_malloc(tlen); if (t == NULL) { *minor_status = ENOMEM; goto errout; @@ -3076,7 +3076,7 @@ get_input_token(unsigned char **buff_in, unsigned int buff_length) return (NULL); input_token->length = len; - input_token->value = malloc(input_token->length); + input_token->value = gssalloc_malloc(input_token->length); if (input_token->value == NULL) { free(input_token); @@ -3189,7 +3189,7 @@ put_mech_set(gss_OID_set mechSet, gss_buffer_t buf) * 0x30 [DER LEN] */ tlen = 1 + gssint_der_length_size(ilen) + ilen; - ptr = malloc(tlen); + ptr = gssalloc_malloc(tlen); if (ptr == NULL) return -1; @@ -3287,7 +3287,7 @@ get_negTokenInit(OM_uint32 *minor_status, return GSS_S_FAILURE; tmpbuf.length = ptr - (unsigned char *)tmpbuf.value; - der_mechSet->value = malloc(tmpbuf.length); + der_mechSet->value = gssalloc_malloc(tmpbuf.length); if (der_mechSet->value == NULL) return GSS_S_FAILURE; memcpy(der_mechSet->value, tmpbuf.value, tmpbuf.length); @@ -3598,7 +3598,7 @@ make_spnego_tokenInit_msg(spnego_gss_ctx_id_t spnego_ctx, tlen = g_token_size(gss_mech_spnego, negTokenInitSize); - t = (unsigned char *) malloc(tlen); + t = (unsigned char *) gssalloc_malloc(tlen); if (t == NULL) { return (-1); @@ -3774,7 +3774,7 @@ make_spnego_tokenTarg_msg(OM_uint32 status, gss_OID mech_wanted, dataLen += 1 + gssint_der_length_size(NegTokenSize); tlen = dataLen; - t = (unsigned char *) malloc(tlen); + t = (unsigned char *) gssalloc_malloc(tlen); if (t == NULL) { ret = GSS_S_DEFECTIVE_TOKEN;