# HG changeset patch # User John "Elwin" Edwards # Date 1488418818 18000 # Node ID 7a96fede6cc801302397433d00ddd1d34ba36401 # Parent a413bc97d3ea066b271534b6234d20e6deb7acd5 UltraRogue: check the return value from getpwuid(). It is possible for getpwuid() to return NULL. Such a failure will no longer cause a segfault. However, the call to getpwuid() may normally not be reachable. diff -r a413bc97d3ea -r 7a96fede6cc8 urogue/mdport.c --- a/urogue/mdport.c Tue Feb 28 21:14:53 2017 -0500 +++ b/urogue/mdport.c Wed Mar 01 20:40:18 2017 -0500 @@ -244,7 +244,8 @@ pw = getpwuid(getuid()); - l = pw->pw_name; + if (pw != NULL) + l = pw->pw_name; #endif if ((l == NULL) || (*l == '\0')) @@ -275,7 +276,8 @@ struct passwd *pw; pw = getpwuid(getuid()); - h = pw->pw_dir; + if (pw != NULL) + h = pw->pw_dir; if (strcmp(h,"/") == 0) h = NULL; @@ -335,7 +337,8 @@ char *def = "/bin/sh"; struct passwd *pw; pw = getpwuid(getuid()); - s = pw->pw_shell; + if (pw != NULL) + s = pw->pw_shell; #endif if ((s == NULL) || (*s == '\0')) if ( (s = getenv("COMSPEC")) == NULL) @@ -455,13 +458,13 @@ #if !defined(_WIN32) && !defined(DJGPP) struct passwd *pp; - if ((pp = getpwuid(uid)) == NULL) + if ((pp = getpwuid(uid)) == NULL) { sprintf(uidstr,"%d", uid); return(uidstr); } - else - return(pp->pw_name); + else + return(pp->pw_name); #else sprintf(uidstr,"%d", uid); return(uidstr);