Mercurial > hg > early-roguelike
comparison xrogue/main.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 |
comparison
equal
deleted
inserted
replaced
| 309:11aeff9acc07 | 310:827441d05b3e |
|---|---|
| 18 | 18 |
| 19 #include <stdlib.h> | 19 #include <stdlib.h> |
| 20 #include <string.h> | 20 #include <string.h> |
| 21 #include <curses.h> | 21 #include <curses.h> |
| 22 #include <signal.h> | 22 #include <signal.h> |
| 23 #include <limits.h> | |
| 23 #include <time.h> | 24 #include <time.h> |
| 24 | 25 |
| 25 #include "mach_dep.h" | 26 #include "mach_dep.h" |
| 26 #include "network.h" | 27 #include "network.h" |
| 27 #include "rogue.h" | 28 #include "rogue.h" |
| 42 /* | 43 /* |
| 43 * get home and options from environment | 44 * get home and options from environment |
| 44 */ | 45 */ |
| 45 | 46 |
| 46 strncpy(home, md_gethomedir(), LINELEN); | 47 strncpy(home, md_gethomedir(), LINELEN); |
| 48 home[LINELEN-1] = '\0'; | |
| 47 | 49 |
| 48 /* Get default save file */ | 50 /* Get default save file */ |
| 49 strcpy(file_name, home); | 51 strcpy(file_name, home); |
| 50 strcat(file_name, "xrogue.sav"); | 52 strcat(file_name, "xrogue.sav"); |
| 51 | 53 |
| 52 /* Get default score file */ | 54 /* Get default score file */ |
| 53 #ifdef SCOREFILE | 55 #ifdef SCOREFILE |
| 54 strncpy(score_file, SCOREFILE, LINELEN); | 56 strncpy(score_file, SCOREFILE, PATH_MAX); |
| 55 score_file[LINELEN-1] = '\0'; | 57 score_file[PATH_MAX-1] = '\0'; |
| 56 #else | 58 #else |
| 57 strcpy(score_file, md_getroguedir()); | 59 strcpy(score_file, md_getroguedir()); |
| 58 | 60 |
| 59 if (*score_file) | 61 if (*score_file) |
| 60 strcat(score_file,"/"); | 62 strcat(score_file,"/"); |
