Mercurial > hg > early-roguelike
comparison rogue3/mdport.c @ 6:9a2c0c60c386
Fix segfault on getpwuid failure
| author | edwarj4 |
|---|---|
| date | Fri, 16 Oct 2009 14:30:06 +0000 |
| parents | 527e2150eaf0 |
| children | d388234c4ce9 |
comparison
equal
deleted
inserted
replaced
| 5:e361fbca47ec | 6:9a2c0c60c386 |
|---|---|
| 442 l = mybuffer; | 442 l = mybuffer; |
| 443 #elif defined(HAVE_GETPWUID)&& !defined(__DJGPP__) | 443 #elif defined(HAVE_GETPWUID)&& !defined(__DJGPP__) |
| 444 struct passwd *pw; | 444 struct passwd *pw; |
| 445 | 445 |
| 446 pw = getpwuid(getuid()); | 446 pw = getpwuid(getuid()); |
| 447 | 447 /* Don't segfault if getpwuid fails (and the thing is wildly possible) */ |
| 448 l = pw->pw_name; | 448 if (pw != NULL) |
| 449 l = pw->pw_name; | |
| 450 else | |
| 451 l = NULL; | |
| 449 #endif | 452 #endif |
| 450 | 453 |
| 451 if ((l == NULL) || (*l == '\0')) | 454 if ((l == NULL) || (*l == '\0')) |
| 452 if ( (l = getenv("USERNAME")) == NULL ) | 455 if ( (l = getenv("USERNAME")) == NULL ) |
| 453 if ( (l = getenv("LOGNAME")) == NULL ) | 456 if ( (l = getenv("LOGNAME")) == NULL ) |
| 473 char slash = '\\'; | 476 char slash = '\\'; |
| 474 #else | 477 #else |
| 475 char slash = '/'; | 478 char slash = '/'; |
| 476 struct passwd *pw; | 479 struct passwd *pw; |
| 477 pw = getpwuid(getuid()); | 480 pw = getpwuid(getuid()); |
| 478 | 481 /* Don't segfault if getpwuid fails */ |
| 479 h = pw->pw_dir; | 482 if (pw != NULL) |
| 483 h = pw->pw_dir; | |
| 484 else | |
| 485 h = NULL; | |
| 480 | 486 |
| 481 if (strcmp(h,"/") == 0) | 487 if (strcmp(h,"/") == 0) |
| 482 h = NULL; | 488 h = NULL; |
| 483 #endif | 489 #endif |
| 484 homedir[0] = 0; | 490 homedir[0] = 0; |
| 538 char *def = "C:\\COMMAND.COM"; | 544 char *def = "C:\\COMMAND.COM"; |
| 539 #else | 545 #else |
| 540 char *def = "/bin/sh"; | 546 char *def = "/bin/sh"; |
| 541 struct passwd *pw; | 547 struct passwd *pw; |
| 542 pw = getpwuid(getuid()); | 548 pw = getpwuid(getuid()); |
| 543 s = pw->pw_shell; | 549 /* don't segfault if getpwuid fails */ |
| 550 if (pw != NULL) | |
| 551 s = pw->pw_shell; | |
| 552 else | |
| 553 s = NULL; | |
| 544 #endif | 554 #endif |
| 545 if ((s == NULL) || (*s == '\0')) | 555 if ((s == NULL) || (*s == '\0')) |
| 546 if ( (s = getenv("COMSPEC")) == NULL) | 556 if ( (s = getenv("COMSPEC")) == NULL) |
| 547 if ( (s = getenv("SHELL")) == NULL) | 557 if ( (s = getenv("SHELL")) == NULL) |
| 548 if ( (s = getenv("SystemRoot")) == NULL) | 558 if ( (s = getenv("SystemRoot")) == NULL) |
