diff options
author | Luke Howard <lukeh@padl.com> | 2010-09-29 08:29:22 +0000 |
---|---|---|
committer | Luke Howard <lukeh@padl.com> | 2010-09-29 08:29:22 +0000 |
commit | a61ea30b7a734ab259bcb2723135d0ba4b8d43ff (patch) | |
tree | 3ca4ee94619aea4bcfe35d2933d174ec9cd56723 | |
parent | 492c3149836ad967daf7e658f2d5abfcde2e014f (diff) | |
download | krb5-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.c | 23 | ||||
-rw-r--r-- | src/lib/gssapi/spnego/spnego_mech.c | 13 |
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 |