diff options
| author | Nalin Dahyabhai <nalin@fedoraproject.org> | 2008-10-28 21:36:18 +0000 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin@fedoraproject.org> | 2008-10-28 21:36:18 +0000 |
| commit | 15dc3d6eee55b6317d8f2fc01dc73ac79bdfe03e (patch) | |
| tree | 6e43e5ab6070337e8f728ff24569d350f52a9c23 | |
| parent | 30b60ff3d6335dc1bf903c63a2fbee918db7d54a (diff) | |
- krb5_fcc_generate_new(): unlock the fcc list lock before returning in theF-10-start
non-mkstemp() case, don't unlock the lock twice before returning if we
happen to run out of memory (fixed in trunk by rewriting the function)
| -rw-r--r-- | krb5-1.6.3-cc_gen_new-locks.patch | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/krb5-1.6.3-cc_gen_new-locks.patch b/krb5-1.6.3-cc_gen_new-locks.patch new file mode 100644 index 0000000..b1e18e6 --- /dev/null +++ b/krb5-1.6.3-cc_gen_new-locks.patch @@ -0,0 +1,25 @@ +We lock "krb5int_cc_file_mutex" before attempting to open the file in the +we-don't-have-mkstemp() case. And we shouldn't be trying to unlock it twice. +The function's rewritten in 1.6.4, but fix it here in the meantime. +--- krb5-1.6.3/src/lib/krb5/ccache/cc_file.c 2008-10-28 17:20:13.000000000 -0400 ++++ krb5-1.6.3/src/lib/krb5/ccache/cc_file.c 2008-10-28 17:20:07.000000000 -0400 +@@ -1976,8 +1976,9 @@ krb5_fcc_generate_new (krb5_context cont + mktemp(scratch); + /* Make sure the file name is reserved */ + ret = THREEPARAMOPEN(scratch, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, 0); + if (ret == -1) { ++ k5_mutex_unlock(&krb5int_cc_file_mutex); + return krb5_fcc_interpret(context, errno); + } + #endif + +@@ -1995,9 +1996,8 @@ krb5_fcc_generate_new (krb5_context cont + k5_mutex_unlock(&krb5int_cc_file_mutex); + free(data); + close(ret); + unlink(scratch); +- k5_mutex_unlock(&krb5int_cc_file_mutex); + return KRB5_CC_NOMEM; + } + + kret = k5_mutex_init(&data->lock); |
