Mercurial > hg > early-roguelike
diff rogue3/mdport.c @ 6:9a2c0c60c386
Fix segfault on getpwuid failure
author | edwarj4 |
---|---|
date | Fri, 16 Oct 2009 14:30:06 +0000 |
parents | 527e2150eaf0 |
children | d388234c4ce9 |
line wrap: on
line diff
--- a/rogue3/mdport.c Fri Oct 16 14:21:24 2009 +0000 +++ b/rogue3/mdport.c Fri Oct 16 14:30:06 2009 +0000 @@ -444,8 +444,11 @@ struct passwd *pw; pw = getpwuid(getuid()); - - l = pw->pw_name; + /* Don't segfault if getpwuid fails (and the thing is wildly possible) */ + if (pw != NULL) + l = pw->pw_name; + else + l = NULL; #endif if ((l == NULL) || (*l == '\0')) @@ -475,8 +478,11 @@ char slash = '/'; struct passwd *pw; pw = getpwuid(getuid()); - - h = pw->pw_dir; + /* Don't segfault if getpwuid fails */ + if (pw != NULL) + h = pw->pw_dir; + else + h = NULL; if (strcmp(h,"/") == 0) h = NULL; @@ -540,7 +546,11 @@ char *def = "/bin/sh"; struct passwd *pw; pw = getpwuid(getuid()); - s = pw->pw_shell; + /* don't segfault if getpwuid fails */ + if (pw != NULL) + s = pw->pw_shell; + else + s = NULL; #endif if ((s == NULL) || (*s == '\0')) if ( (s = getenv("COMSPEC")) == NULL)