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.
This commit is contained in:
parent
2b6d8bcb77
commit
3dfd8fd09b
13 changed files with 51 additions and 78 deletions
|
|
@ -20,6 +20,7 @@
|
|||
#include <string.h>
|
||||
#include <curses.h>
|
||||
#include <signal.h>
|
||||
#include <limits.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "mach_dep.h"
|
||||
|
|
@ -44,6 +45,7 @@ main(int argc, char *argv[], char *envp[])
|
|||
*/
|
||||
|
||||
strncpy(home, md_gethomedir(), LINELEN);
|
||||
home[LINELEN-1] = '\0';
|
||||
|
||||
/* Get default save file */
|
||||
strcpy(file_name, home);
|
||||
|
|
@ -51,8 +53,8 @@ main(int argc, char *argv[], char *envp[])
|
|||
|
||||
/* Get default score file */
|
||||
#ifdef SCOREFILE
|
||||
strncpy(score_file, SCOREFILE, LINELEN);
|
||||
score_file[LINELEN-1] = '\0';
|
||||
strncpy(score_file, SCOREFILE, PATH_MAX);
|
||||
score_file[PATH_MAX-1] = '\0';
|
||||
#else
|
||||
strcpy(score_file, md_getroguedir());
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue