# HG changeset patch # User elwin # Date 1344728734 0 # Node ID 46f39359c4a71953b4bdb9e251c64feecf156bec # Parent d8e5c5dd9b55844cc30e8dde991fb1b15da114b3 arogue5: avoid segfaulting if getpwuid() fails. diff -r d8e5c5dd9b55 -r 46f39359c4a7 arogue5/main.c --- a/arogue5/main.c Sat Aug 11 21:58:20 2012 +0000 +++ b/arogue5/main.c Sat Aug 11 23:45:34 2012 +0000 @@ -49,14 +49,14 @@ register char *env; int lowtime; time_t now; - char *roguedir = md_getroguedir(); + char *roguedir; + roguedir = md_getroguedir(); md_init(); /* * get home and options from environment */ - strncpy(home,md_gethomedir(),LINELEN); #ifdef SAVEDIR diff -r d8e5c5dd9b55 -r 46f39359c4a7 arogue5/mdport.c --- a/arogue5/mdport.c Sat Aug 11 21:58:20 2012 +0000 +++ b/arogue5/mdport.c Sat Aug 11 23:45:34 2012 +0000 @@ -234,7 +234,10 @@ pw = getpwuid(getuid()); - l = pw->pw_name; + if (pw != NULL) + l = pw->pw_name; + else + l = ""; #endif if ((l == NULL) || (*l == '\0')) @@ -265,7 +268,10 @@ 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; @@ -325,7 +331,10 @@ char *def = "/bin/sh"; struct passwd *pw; pw = getpwuid(getuid()); - s = pw->pw_shell; + if (pw != NULL) + s = pw->pw_shell; + else + s = ""; #endif if ((s == NULL) || (*s == '\0')) if ( (s = getenv("COMSPEC")) == NULL)