--- camwire2-2.0.0-Source/examples/cammonitor/cammonitor.c.orig 2023-07-09 10:46:29.034985838 +0200 +++ camwire2-2.0.0-Source/examples/cammonitor/cammonitor.c 2023-07-09 11:49:33.674482685 +0200 @@ -2340,20 +2340,23 @@ static void filename_framenumber(char *n const int strip, const long frameno) { - size_t namelen, tokenindex; + size_t namelen, tokenindex, outlen; char *token; namelen = strlen(filename); token = strstr(filename, FRAMENUMBER_TOKEN); if (token == NULL) tokenindex = namelen; else tokenindex = token - filename; - strncpy(new_name, filename, tokenindex); - new_name[tokenindex] = '\0'; + + outlen = (tokenindex < MAX_FILENAME - 12) ? tokenindex : (MAX_FILENAME - 12); + memcpy(new_name, filename, outlen); + new_name[outlen] = '\0'; if (token != NULL) { if (!strip) sprintf(&new_name[tokenindex], "%011ld", frameno); tokenindex += strlen(FRAMENUMBER_TOKEN); } + if (tokenindex + strlen(filename + tokenindex) + 1 <= MAX_FILENAME) strcat(new_name, &filename[tokenindex]); } @@ -2817,7 +2820,8 @@ static void settings_load(const Camwire_ set->save_num_images = new_settings.save_num_images; set->save_delay = new_settings.save_delay; strncpy(set->imagefilename, new_settings.imagefilename, - MAX_FILENAME); + MAX_FILENAME-1); + set->imagefilename[MAX_FILENAME-1] = '\0'; } else { --- camwire2-2.0.0-Source/camwire/camwire.c.orig 2015-05-21 23:38:31.000000000 +0200 +++ camwire2-2.0.0-Source/camwire/camwire.c 2023-07-09 12:05:54.227004109 +0200 @@ -3355,6 +3355,7 @@ static FILE * open_named_conf_file(const } } strncat(conffilename, filename, CAMWIRE_ID_MAX_CHARS); + conffilename[CAMWIRE_ID_MAX_CHARS] = '\n'; strncat(conffilename, CONFFILE_EXTENSION, CONFFILE_EXTENSION_MAX_CHARS); return fopen(conffilename, "r");