This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU gss".
http://git.savannah.gnu.org/cgit/gss.git/commit/?id=db66fcdcfb8008de1ed66f2baab1c67554c32810 The branch, master has been updated via db66fcdcfb8008de1ed66f2baab1c67554c32810 (commit) via 28e4938b5d027be4cba1d5d1c90fda56bdf02ce1 (commit) from ed975555af056ddea561ecd96c1491bb904e7358 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit db66fcdcfb8008de1ed66f2baab1c67554c32810 Author: Simon Josefsson <[email protected]> Date: Mon Mar 29 22:02:12 2010 +0200 gss_inquire_mech_for_saslname: Don't read out bounds. commit 28e4938b5d027be4cba1d5d1c90fda56bdf02ce1 Author: Simon Josefsson <[email protected]> Date: Mon Mar 29 22:00:48 2010 +0200 Check for read-out-bounds. ----------------------------------------------------------------------- Summary of changes: lib/meta.c | 10 +++++++--- lib/meta.h | 2 +- lib/saslname.c | 3 +-- tests/saslname.c | 5 ++++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/meta.c b/lib/meta.c index f836776..579cbf6 100644 --- a/lib/meta.c +++ b/lib/meta.c @@ -112,15 +112,19 @@ _gss_find_mech (const gss_OID oid) } _gss_mech_api_t -_gss_find_mech_by_saslname (const char *saslname) +_gss_find_mech_by_saslname (const gss_buffer_t sasl_mech_name) { size_t i; - if (!saslname) + if (sasl_mech_name == NULL + || sasl_mech_name->value == NULL + || sasl_mech_name->length == 0) return NULL; for (i = 0; _gss_mech_apis[i].mech; i++) - if (strcmp (_gss_mech_apis[i].sasl_name, saslname) == 0) + if (strlen (_gss_mech_apis[i].sasl_name) == sasl_mech_name->length && + memcmp (_gss_mech_apis[i].sasl_name, sasl_mech_name->value, + sasl_mech_name->length) == 0) return &_gss_mech_apis[i]; return NULL; diff --git a/lib/meta.h b/lib/meta.h index 35b3b6a..90196ed 100644 --- a/lib/meta.h +++ b/lib/meta.h @@ -123,7 +123,7 @@ typedef struct _gss_mech_api_struct _gss_mech_api_t _gss_find_mech (const gss_OID oid); _gss_mech_api_t _gss_find_mech_no_default (const gss_OID oid); -_gss_mech_api_t _gss_find_mech_by_saslname (const char *saslname); +_gss_mech_api_t _gss_find_mech_by_saslname (const gss_buffer_t sasl_mech_name); OM_uint32 _gss_indicate_mechs1 (OM_uint32 * minor_status, gss_OID_set * mech_set); diff --git a/lib/saslname.c b/lib/saslname.c index 59f5b6d..a96b2c7 100644 --- a/lib/saslname.c +++ b/lib/saslname.c @@ -159,8 +159,7 @@ gss_inquire_mech_for_saslname (OM_uint32 *minor_status, return GSS_S_CALL_INACCESSIBLE_READ; } - m = _gss_find_mech_by_saslname (sasl_mech_name->value); - + m = _gss_find_mech_by_saslname (sasl_mech_name); if (!m) { if (minor_status) diff --git a/tests/saslname.c b/tests/saslname.c index 5844e8f..9a88384 100644 --- a/tests/saslname.c +++ b/tests/saslname.c @@ -75,8 +75,9 @@ main (int argc, char *argv[]) maj_stat, min_stat); #ifdef USE_KERBEROS5 - bufdesc.value = (char *) "GS2-KRB5"; bufdesc.length = 8; + bufdesc.value = malloc (bufdesc.length); + memcpy (bufdesc.value, "GS2-KRB5", bufdesc.length); maj_stat = gss_inquire_mech_for_saslname (&min_stat, &bufdesc, NULL); if (maj_stat == GSS_S_COMPLETE) @@ -94,6 +95,8 @@ main (int argc, char *argv[]) if (oid != GSS_KRB5 || !gss_oid_equal (oid, GSS_KRB5)) fail ("GS2-OID not Krb5?!\n"); + + free (bufdesc.value); #endif maj_stat = gss_inquire_saslname_for_mech (&min_stat, NULL, NULL, NULL, NULL); hooks/post-receive -- GNU gss _______________________________________________ Gss-commit mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gss-commit
