Mercurial > hg > early-roguelike
diff urogue/mdport.c @ 310:827441d05b3e
Advanced Rogue family: fix some potential buffer overflows.
Some code for determining the score file location assumed that PATH_MAX
would be less than 1024, which cannot be guaranteed.
Advanced Rogue 5 and 7, and XRogue, have had the buffers for the file
name enlarged. UltraRogue never called the functions, so the code has
been deleted instead.
author | John "Elwin" Edwards |
---|---|
date | Mon, 03 May 2021 19:05:37 -0400 |
parents | e52a8a7ad4c5 |
children |
line wrap: on
line diff
--- a/urogue/mdport.c Sun May 02 21:54:11 2021 -0400 +++ b/urogue/mdport.c Mon May 03 19:05:37 2021 -0400 @@ -401,54 +401,6 @@ #endif } -int -directory_exists(char *dirname) -{ - struct stat sb; - - if (stat(dirname, &sb) == 0) /* path exists */ - return (sb.st_mode & S_IFDIR); - - return(0); -} - -char * -md_getroguedir() -{ - static char path[1024]; - char *end,*home; - - if ( (home = getenv("ROGUEHOME")) != NULL) - { - if (*home) - { - strncpy(path, home, PATH_MAX - 20); - - end = &path[strlen(path)-1]; - - while( (end >= path) && ((*end == '/') || (*end == '\\'))) - *end-- = '\0'; - - if (directory_exists(path)) - return(path); - } - } - - if (directory_exists("/var/games/roguelike")) - return("/var/games/roguelike"); - if (directory_exists("/var/lib/roguelike")) - return("/var/lib/roguelike"); - if (directory_exists("/var/roguelike")) - return("/var/roguelike"); - if (directory_exists("/usr/games/lib")) - return("/usr/games/lib"); - if (directory_exists("/games/roguelik")) - return("/games/roguelik"); - if (directory_exists(md_gethomedir())) - return(md_gethomedir()); - return(""); -} - char * md_getrealname(int uid) {