Fix string termination problems that caused #92.
authorDavid Griffith <dave@661.org>
Tue, 4 Sep 2018 07:56:30 +0000 (00:56 -0700)
committerDavid Griffith <dave@661.org>
Tue, 4 Sep 2018 07:56:30 +0000 (00:56 -0700)
src/sdl/sf_util.c

index 27a238c031042d8ea3d5916c4849c90a2aa09e36..17b2a36f8903feae61c07d84ba3a59fc25d44b21 100644 (file)
@@ -393,12 +393,12 @@ void os_process_arguments (int argc, char *argv[])
   strncat(f_setup.command_name, EXT_COMMAND, strlen(EXT_COMMAND));
 
   if (!f_setup.restore_mode) {
-    f_setup.save_name = malloc(strlen(f_setup.story_name) * sizeof(char) + 5);
-    strncpy(f_setup.save_name, f_setup.story_name, strlen(f_setup.story_name));
+    f_setup.save_name = malloc((strlen(f_setup.story_name) + strlen(EXT_SAVE)) * sizeof(char) + 1);
+    strncpy(f_setup.save_name, f_setup.story_name, strlen(f_setup.story_name) + 1);
     strncat(f_setup.save_name, EXT_SAVE, strlen(EXT_SAVE));
   } else {  /*Set our auto load save as the name_save*/
-    f_setup.save_name = malloc(strlen(f_setup.tmp_save_name) * sizeof(char) + 5);
-    strncpy(f_setup.save_name, f_setup.tmp_save_name, strlen(f_setup.tmp_save_name));
+    f_setup.save_name = malloc((strlen(f_setup.tmp_save_name) + strlen(EXT_SAVE)) * sizeof(char) + 1);
+    strncpy(f_setup.save_name, f_setup.tmp_save_name, strlen(f_setup.tmp_save_name) + 1);
     free(f_setup.tmp_save_name);
   }
 
@@ -487,14 +487,14 @@ extern char stripped_story_name[];
 
 static char *getextension( int flag)
   {
-  char *ext = ".aux";
+  char *ext = EXT_AUX;
 
   if (flag == FILE_SAVE || flag == FILE_RESTORE)
-       ext = ".sav";
+       ext = EXT_SAVE;
   else if (flag == FILE_SCRIPT)
-       ext = ".scr";
+       ext = EXT_SCRIPT;
   else if (flag == FILE_RECORD || flag == FILE_PLAYBACK)
-       ext = ".rec";
+       ext = EXT_COMMAND;
 
   return ext;
   }