Plug a memory leak on user/group lookup failure found by ASAN.

This commit is contained in:
Todd C. Miller
2019-03-14 11:31:05 -06:00
parent e31ac5a998
commit 194968eaf0

View File

@@ -249,6 +249,7 @@ done:
item->d.pw ? item->d.pw->pw_name : "unknown",
item->registry, node ? "cache hit" : "cached");
}
if (item->d.pw != NULL)
item->refcnt++;
debug_return_ptr(item->d.pw);
}
@@ -319,6 +320,7 @@ done:
key.registry, item->d.pw ? (int)item->d.pw->pw_uid : -1,
item->registry, node ? "cache hit" : "cached");
}
if (item->d.pw != NULL)
item->refcnt++;
debug_return_ptr(item->d.pw);
}
@@ -630,6 +632,7 @@ done:
key.registry, item->d.gr ? (int)item->d.gr->gr_gid : -1,
item->registry, node ? "cache hit" : "cached");
}
if (item->d.gr != NULL)
item->refcnt++;
debug_return_ptr(item->d.gr);
}
@@ -713,6 +716,7 @@ sudo_fakegrnam(const char *group)
break;
}
}
if (item->d.gr != NULL)
item->refcnt++;
debug_return_ptr(item->d.gr);
}
@@ -854,6 +858,7 @@ sudo_get_grlist(const struct passwd *pw)
}
}
done:
if (item->d.grlist != NULL)
item->refcnt++;
debug_return_ptr(item->d.grlist);
}
@@ -957,6 +962,7 @@ sudo_get_gidlist(const struct passwd *pw, unsigned int type)
}
}
done:
if (item->d.gidlist != NULL)
item->refcnt++;
debug_return_ptr(item->d.gidlist);
}