|
Nalin Dahyabhai |
b3399eb |
commit 5ac159e220297a8f62dd5edcec6f9b988b0627ea
|
|
Nalin Dahyabhai |
49c8edf |
Author: Nalin Dahyabhai <nalin@dahyabhai.net>
|
|
Nalin Dahyabhai |
49c8edf |
Date: Mon Nov 11 13:10:08 2013 -0500
|
|
Nalin Dahyabhai |
49c8edf |
|
|
Nalin Dahyabhai |
49c8edf |
Catch more strtol() failures when using KEYRINGs
|
|
Nalin Dahyabhai |
49c8edf |
|
|
Nalin Dahyabhai |
b3399eb |
When parsing what should be a UID while resolving a KEYRING ccache
|
|
Nalin Dahyabhai |
b3399eb |
name, don't just depend on strtol() to set errno when the residual
|
|
Nalin Dahyabhai |
b3399eb |
that we pass to it can't be parsed as a number. In addition to
|
|
Nalin Dahyabhai |
b3399eb |
checking errno, pass in and check the value of an "endptr".
|
|
Nalin Dahyabhai |
b3399eb |
|
|
Nalin Dahyabhai |
b3399eb |
[ghudson@mit.edu: simplified slightly]
|
|
Nalin Dahyabhai |
b3399eb |
|
|
Nalin Dahyabhai |
b3399eb |
ticket: 7764 (new)
|
|
Nalin Dahyabhai |
b3399eb |
target_version: 1.12
|
|
Nalin Dahyabhai |
b3399eb |
tags: pullup
|
|
Nalin Dahyabhai |
49c8edf |
|
|
Nalin Dahyabhai |
49c8edf |
diff --git a/src/lib/krb5/ccache/cc_keyring.c b/src/lib/krb5/ccache/cc_keyring.c
|
|
Nalin Dahyabhai |
b3399eb |
index 795ccd6..a07a0dc 100644
|
|
Nalin Dahyabhai |
49c8edf |
--- a/src/lib/krb5/ccache/cc_keyring.c
|
|
Nalin Dahyabhai |
49c8edf |
+++ b/src/lib/krb5/ccache/cc_keyring.c
|
|
Nalin Dahyabhai |
49c8edf |
@@ -593,7 +593,7 @@ get_collection(const char *anchor_name, const char *collection_name,
|
|
Nalin Dahyabhai |
49c8edf |
{
|
|
Nalin Dahyabhai |
49c8edf |
krb5_error_code ret;
|
|
Nalin Dahyabhai |
49c8edf |
key_serial_t persistent_id, anchor_id, possess_id = 0;
|
|
Nalin Dahyabhai |
49c8edf |
- char *ckname;
|
|
Nalin Dahyabhai |
b3399eb |
+ char *ckname, *cnend;
|
|
Nalin Dahyabhai |
49c8edf |
long uidnum;
|
|
Nalin Dahyabhai |
49c8edf |
|
|
Nalin Dahyabhai |
49c8edf |
*collection_id_out = 0;
|
|
Nalin Dahyabhai |
49c8edf |
@@ -607,8 +607,8 @@ get_collection(const char *anchor_name, const char *collection_name,
|
|
Nalin Dahyabhai |
49c8edf |
*/
|
|
Nalin Dahyabhai |
49c8edf |
if (*collection_name != '\0') {
|
|
Nalin Dahyabhai |
49c8edf |
errno = 0;
|
|
Nalin Dahyabhai |
49c8edf |
- uidnum = strtol(collection_name, NULL, 10);
|
|
Nalin Dahyabhai |
49c8edf |
- if (errno)
|
|
Nalin Dahyabhai |
49c8edf |
+ uidnum = strtol(collection_name, &cnend, 10);
|
|
Nalin Dahyabhai |
b3399eb |
+ if (errno || *cnend != '\0')
|
|
Nalin Dahyabhai |
49c8edf |
return KRB5_KCC_INVALID_UID;
|
|
Nalin Dahyabhai |
49c8edf |
} else {
|
|
Nalin Dahyabhai |
49c8edf |
uidnum = geteuid();
|