# 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)