gss-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gss branch, master, updated. gss-0-1-5-26-gdb66fcd


From: Simon Josefsson
Subject: [SCM] GNU gss branch, master, updated. gss-0-1-5-26-gdb66fcd
Date: Mon, 29 Mar 2010 20:02:16 +0000

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 <address@hidden>
Date:   Mon Mar 29 22:02:12 2010 +0200

    gss_inquire_mech_for_saslname: Don't read out bounds.

commit 28e4938b5d027be4cba1d5d1c90fda56bdf02ce1
Author: Simon Josefsson <address@hidden>
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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]