Error return from krb5int_random_string not tested in ccache code
authorEzra Peisach <epeisach@mit.edu>
Thu, 14 Aug 2008 05:09:12 +0000 (05:09 +0000)
committerEzra Peisach <epeisach@mit.edu>
Thu, 14 Aug 2008 05:09:12 +0000 (05:09 +0000)
krb5int_random_string should probably only fail on malloc
failure. Test for an error return from the function and cleanup
properly (release mutex, return error instead of using uninitialized
memory).

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20655 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/ccache/cc_keyring.c
src/lib/krb5/ccache/cc_memory.c

index 638db3c7fd2c2ded85e1ccb2db1286f7eef60ece..163ad30f729e434d0d4a4ae4ca5a728c3bd42fa8 100644 (file)
@@ -874,7 +874,13 @@ krb5_krcc_generate_new(krb5_context context, krb5_ccache * id)
      * a unique name, or we get an error.
      */
     while (1) {
-       krb5int_random_string(context, uniquename, sizeof(uniquename));
+       kret = krb5int_random_string(context, uniquename, sizeof(uniquename));
+        if (kret) {
+            k5_mutex_unlock(&krb5int_krcc_mutex);
+            free(lid);
+            return kret;
+       }
+
        DEBUG_PRINT(("krb5_krcc_generate_new: searching for name '%s'\n",
                     uniquename));
        key = keyctl_search(ring_id, KRCC_KEY_TYPE_KEYRING, uniquename, 0);
index 504dccb73a80e487e71b83dee0b3f19b86af126c..0014407c77f60c1936168f8d38f1d53c2ae2499a 100644 (file)
@@ -471,7 +471,12 @@ krb5_mcc_generate_new (krb5_context context, krb5_ccache *id)
     while (1) {
         krb5_mcc_list_node *ptr;
 
-        krb5int_random_string (context, uniquename, sizeof (uniquename));
+        err = krb5int_random_string (context, uniquename, sizeof (uniquename));
+        if (err) {
+           k5_mutex_unlock(&krb5int_mcc_mutex);
+           free(lid);
+           return err;
+        }
         
        for (ptr = mcc_head; ptr; ptr=ptr->next) {
             if (!strcmp(ptr->cache->name, uniquename)) {