From 194968eaf0ef6fd3d2a7c3eb6a78166074fe25ec Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 14 Mar 2019 11:31:05 -0600 Subject: [PATCH] Plug a memory leak on user/group lookup failure found by ASAN. --- plugins/sudoers/pwutil.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/plugins/sudoers/pwutil.c b/plugins/sudoers/pwutil.c index ab60986b1..963d0713e 100644 --- a/plugins/sudoers/pwutil.c +++ b/plugins/sudoers/pwutil.c @@ -249,7 +249,8 @@ done: item->d.pw ? item->d.pw->pw_name : "unknown", item->registry, node ? "cache hit" : "cached"); } - item->refcnt++; + if (item->d.pw != NULL) + item->refcnt++; debug_return_ptr(item->d.pw); } @@ -319,7 +320,8 @@ done: key.registry, item->d.pw ? (int)item->d.pw->pw_uid : -1, item->registry, node ? "cache hit" : "cached"); } - item->refcnt++; + if (item->d.pw != NULL) + item->refcnt++; debug_return_ptr(item->d.pw); } @@ -630,7 +632,8 @@ done: key.registry, item->d.gr ? (int)item->d.gr->gr_gid : -1, item->registry, node ? "cache hit" : "cached"); } - item->refcnt++; + if (item->d.gr != NULL) + item->refcnt++; debug_return_ptr(item->d.gr); } @@ -713,7 +716,8 @@ sudo_fakegrnam(const char *group) break; } } - item->refcnt++; + if (item->d.gr != NULL) + item->refcnt++; debug_return_ptr(item->d.gr); } @@ -854,7 +858,8 @@ sudo_get_grlist(const struct passwd *pw) } } done: - item->refcnt++; + if (item->d.grlist != NULL) + item->refcnt++; debug_return_ptr(item->d.grlist); } @@ -957,7 +962,8 @@ sudo_get_gidlist(const struct passwd *pw, unsigned int type) } } done: - item->refcnt++; + if (item->d.gidlist != NULL) + item->refcnt++; debug_return_ptr(item->d.gidlist); } -- 2.40.0