su: Segmentation Fault on unknown numerical uids
e.g.
su 2999,2999,2999 echo hello
Segmentation Fault
return from getpwuid is NULL. KISS we opt to unset LOGNAME and USER
Change-Id: I7e7eddacfd6857f83482727eb5ec5c51b9170039
diff --git a/su/su.c b/su/su.c
index d932c1b..ea61f93 100644
--- a/su/su.c
+++ b/su/su.c
@@ -122,8 +122,13 @@
setenv("PATH", _PATH_DEFPATH, 1);
unsetenv("IFS");
struct passwd* pw = getpwuid(uid);
- setenv("LOGNAME", pw->pw_name, 1);
- setenv("USER", pw->pw_name, 1);
+ if (pw) {
+ setenv("LOGNAME", pw->pw_name, 1);
+ setenv("USER", pw->pw_name, 1);
+ } else {
+ unsetenv("LOGNAME");
+ unsetenv("USER");
+ }
// Set up the arguments for exec.
char* exec_args[argc + 1]; // Having too much space is fine.