Mercurial > hg > early-roguelike
diff rogue4/mdport.c @ 23:107a467612fb
rogue4: prevent segfault on getpwuid failure
author | edwarj4 |
---|---|
date | Tue, 24 Nov 2009 12:53:15 +0000 |
parents | 9535a08ddc39 |
children | 3c5682bbf164 |
line wrap: on
line diff
--- a/rogue4/mdport.c Mon Nov 16 23:54:24 2009 +0000 +++ b/rogue4/mdport.c Tue Nov 24 12:53:15 2009 +0000 @@ -53,6 +53,7 @@ #include <stdlib.h> #include <string.h> +#include <errno.h> #if defined(_WIN32) && !defined(__MINGW32__) #define PATH_MAX MAX_PATH @@ -265,8 +266,10 @@ struct passwd *pw; pw = getpwuid(getuid()); - - l = pw->pw_name; + if (pw != NULL) + l = pw->pw_name; + else + l = NULL; #endif if ((l == NULL) || (*l == '\0')) @@ -295,8 +298,10 @@ char slash = '/'; struct passwd *pw; pw = getpwuid(getuid()); - - h = pw->pw_dir; + if (pw != NULL) + h = pw->pw_dir; + else + h = ""; if (strcmp(h,"/") == 0) h = NULL; @@ -343,7 +348,10 @@ char *def = "/bin/sh"; struct passwd *pw; pw = getpwuid(getuid()); - s = pw->pw_shell; + if (pw != NULL) + s = pw->pw_shell; + else + s = NULL; #endif if ((s == NULL) || (*s == '\0')) if ( (s = getenv("COMSPEC")) == NULL)