comparison xrogue/state.c @ 144:708bb2dea17c

arogue7, xrogue: prevent potential NULL dereferencing. It is possible for getpwuid() to fail and return NULL. Various md_get* functions now check for this.
author John "Elwin" Edwards
date Mon, 18 May 2015 10:53:22 -0400
parents 7faf4568c295
children 1af259ac4ed2
comparison
equal deleted inserted replaced
143:7faf4568c295 144:708bb2dea17c
2992 #if !defined(_WIN32) && !defined(DJGPP) 2992 #if !defined(_WIN32) && !defined(DJGPP)
2993 struct passwd *pw; 2993 struct passwd *pw;
2994 2994
2995 pw = getpwuid(getuid()); 2995 pw = getpwuid(getuid());
2996 2996
2997 l = pw->pw_name; 2997 if (pw != NULL)
2998 l = pw->pw_name;
2998 #endif 2999 #endif
2999 3000
3000 if ((l == NULL) || (*l == '\0')) 3001 if ((l == NULL) || (*l == '\0'))
3001 if ( (l = getenv("USERNAME")) == NULL ) 3002 if ( (l = getenv("USERNAME")) == NULL )
3002 if ( (l = getenv("LOGNAME")) == NULL ) 3003 if ( (l = getenv("LOGNAME")) == NULL )
3023 #else 3024 #else
3024 char slash = '/'; 3025 char slash = '/';
3025 struct passwd *pw; 3026 struct passwd *pw;
3026 pw = getpwuid(getuid()); 3027 pw = getpwuid(getuid());
3027 3028
3028 h = pw->pw_dir; 3029 if (pw != NULL)
3029 3030 {
3030 if (strcmp(h,"/") == 0) 3031 h = pw->pw_dir;
3031 h = NULL; 3032 if (strcmp(h,"/") == 0)
3033 h = NULL;
3034 }
3032 #endif 3035 #endif
3033 homedir[0] = 0; 3036 homedir[0] = 0;
3034 3037
3035 #ifdef _WIN32 3038 #ifdef _WIN32
3036 if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, szPath))) 3039 if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, szPath)))
3122 char *def = "C:\\COMMAND.COM"; 3125 char *def = "C:\\COMMAND.COM";
3123 #else 3126 #else
3124 char *def = "/bin/sh"; 3127 char *def = "/bin/sh";
3125 struct passwd *pw; 3128 struct passwd *pw;
3126 pw = getpwuid(getuid()); 3129 pw = getpwuid(getuid());
3127 s = pw->pw_shell; 3130 if (pw != NULL)
3131 s = pw->pw_shell;
3128 #endif 3132 #endif
3129 if ((s == NULL) || (*s == '\0')) 3133 if ((s == NULL) || (*s == '\0'))
3130 if ( (s = getenv("COMSPEC")) == NULL) 3134 if ( (s = getenv("COMSPEC")) == NULL)
3131 if ( (s = getenv("SHELL")) == NULL) 3135 if ( (s = getenv("SHELL")) == NULL)
3132 if ( (s = getenv("SystemRoot")) == NULL) 3136 if ( (s = getenv("SystemRoot")) == NULL)