aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Howard <lukeh@padl.com>2010-09-29 08:29:22 +0000
committerLuke Howard <lukeh@padl.com>2010-09-29 08:29:22 +0000
commita61ea30b7a734ab259bcb2723135d0ba4b8d43ff (patch)
tree3ca4ee94619aea4bcfe35d2933d174ec9cd56723
parent492c3149836ad967daf7e658f2d5abfcde2e014f (diff)
downloadkrb5-a61ea30b7a734ab259bcb2723135d0ba4b8d43ff.zip
krb5-a61ea30b7a734ab259bcb2723135d0ba4b8d43ff.tar.gz
krb5-a61ea30b7a734ab259bcb2723135d0ba4b8d43ff.tar.bz2
Check for out of memory when generating SASL name
git-svn-id: svn://anonsvn.mit.edu/krb5/users/lhoward/sasl-gs2@24371 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/lib/gssapi/krb5/gssapi_krb5.c23
-rw-r--r--src/lib/gssapi/spnego/spnego_mech.c13
2 files changed, 23 insertions, 13 deletions
diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c
index 911e984..aa4a9de 100644
--- a/src/lib/gssapi/krb5/gssapi_krb5.c
+++ b/src/lib/gssapi/krb5/gssapi_krb5.c
@@ -667,20 +667,25 @@ krb5_gss_inquire_saslname_for_mech(OM_uint32 *minor_status,
gss_buffer_t mech_name,
gss_buffer_t mech_description)
{
- *minor_status = 0;
-
if (g_OID_equal(desired_mech, gss_mech_iakerb)) {
- g_make_string_buffer(GS2_IAKERB_SASL_NAME, sasl_mech_name);
- g_make_string_buffer("iakerb", mech_name);
- g_make_string_buffer("Initial and Pass Through Authentication "
- "Kerberos Mechanism (IAKERB)", mech_description);
+ if (!g_make_string_buffer(GS2_IAKERB_SASL_NAME, sasl_mech_name) ||
+ !g_make_string_buffer("iakerb", mech_name) ||
+ !g_make_string_buffer("Initial and Pass Through Authentication "
+ "Kerberos Mechanism (IAKERB)", mech_description))
+ goto fail;
} else {
- g_make_string_buffer(GS2_KRB5_SASL_NAME, sasl_mech_name);
- g_make_string_buffer("krb5", mech_name);
- g_make_string_buffer("Kerberos 5 GSS-API Mechanism", mech_description);
+ if (!g_make_string_buffer(GS2_KRB5_SASL_NAME, sasl_mech_name) ||
+ !g_make_string_buffer("krb5", mech_name) ||
+ !g_make_string_buffer("Kerberos 5 GSS-API Mechanism", mech_description))
+ goto fail;
}
+ *minor_status = 0;
return GSS_S_COMPLETE;
+
+fail:
+ *minor_status = ENOMEM;
+ return GSS_S_FAILURE;
}
static OM_uint32
diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c
index 2e030e4..e45a060 100644
--- a/src/lib/gssapi/spnego/spnego_mech.c
+++ b/src/lib/gssapi/spnego/spnego_mech.c
@@ -2720,12 +2720,17 @@ spnego_gss_inquire_saslname_for_mech(OM_uint32 *minor_status,
if (!g_OID_equal(desired_mech, gss_mech_spnego))
return (GSS_S_BAD_MECH);
- (void) g_make_string_buffer(SPNEGO_SASL_NAME, sasl_mech_name);
- (void) g_make_string_buffer("spnego", mech_name);
- (void) g_make_string_buffer("Simple and Protected GSS-API "
- "Negotiation Mechanism", mech_description);
+ if (!g_make_string_buffer(SPNEGO_SASL_NAME, sasl_mech_name) ||
+ !g_make_string_buffer("spnego", mech_name) ||
+ !g_make_string_buffer("Simple and Protected GSS-API "
+ "Negotiation Mechanism", mech_description))
+ goto fail;
return (GSS_S_COMPLETE);
+
+fail:
+ *minor_status = ENOMEM;
+ return (GSS_S_FAILURE);
}
OM_uint32