Mercurial > hg > early-roguelike
diff arogue7/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 | d3968e9cb98d |
children |
line wrap: on
line diff
--- a/arogue7/main.c Sun May 02 21:54:11 2021 -0400 +++ b/arogue7/main.c Mon May 03 19:05:37 2021 -0400 @@ -16,6 +16,7 @@ #include <stdlib.h> #include <string.h> #include <signal.h> +#include <limits.h> #include <errno.h> #ifdef BSD #include <sys/time.h> @@ -59,6 +60,7 @@ */ strncpy(home, md_gethomedir(), LINELEN); + home[LINELEN-1] = '\0'; /* Get default save file */ strcpy(file_name, home); @@ -66,8 +68,8 @@ /* 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());