From: Todd C. Miller Date: Wed, 4 May 2016 14:55:21 +0000 (-0600) Subject: Sync the "cache hit" debug messages with the "cached" debug messages. X-Git-Tag: SUDO_1_8_17^2~126 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a152afaeb538db6785c1170377e40dad62546f2f;p=sudo Sync the "cache hit" debug messages with the "cached" debug messages. This fixes a bug where we could dereference a NULL pointer when we look up a negative cached entry which is stored as a NULL passwd or group struct pointer. Bug #743. --- diff --git a/plugins/sudoers/pwutil.c b/plugins/sudoers/pwutil.c index dee2b42ca..a8fddb5dd 100644 --- a/plugins/sudoers/pwutil.c +++ b/plugins/sudoers/pwutil.c @@ -139,8 +139,8 @@ sudo_getpwuid(uid_t uid) item = node->data; sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: uid %u [%s] -> user %s [%s] (cache hit)", __func__, - (unsigned int)uid, key.registry, item->d.pw->pw_name, - item->registry); + (unsigned int)uid, key.registry, + item->d.pw ? item->d.pw->pw_name : "unknown", item->registry); goto done; } /* @@ -202,8 +202,8 @@ sudo_getpwnam(const char *name) if ((node = rbfind(pwcache_byname, &key)) != NULL) { item = node->data; sudo_debug_printf(SUDO_DEBUG_DEBUG, - "%s: user %s [%s] -> uid %u [%s] (cache hit)", __func__, name, - key.registry, (unsigned int)item->d.pw->pw_uid, item->registry); + "%s: user %s [%s] -> uid %d [%s] (cache hit)", __func__, name, + key.registry, item->d.pw ? (int)item->d.pw->pw_uid : -1, item->registry); goto done; } /* @@ -461,8 +461,8 @@ sudo_getgrgid(gid_t gid) item = node->data; sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: gid %u [%s] -> group %s [%s] (cache hit)", __func__, - (unsigned int)gid, key.registry, item->d.gr->gr_name, - item->registry); + (unsigned int)gid, key.registry, + item->d.gr ? item->d.gr->gr_name : "unknown", item->registry); goto done; } /*