# HG changeset patch # User edwarj4 # Date 1255703406 0 # Node ID 9a2c0c60c3863fc0932539cd1f64069972519d50 # Parent e361fbca47ecf902369b11572a9b48efea2e86c0 Fix segfault on getpwuid failure diff -r e361fbca47ec -r 9a2c0c60c386 rogue3/mdport.c --- 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)