commit 15678265f477be93c68481ccd826bbc6ecc9ac3f Author: Edoardo Morandi Date: Fri Nov 2 21:09:50 2018 +0100 Avoided some potential overflows diff --git a/gui/components/gui_chart.cc b/gui/components/gui_chart.cc index e7ac0a5d2..f6e91192d 100644 --- a/gui/components/gui_chart.cc +++ b/gui/components/gui_chart.cc @@ -96,7 +96,7 @@ void gui_chart_t::draw(scr_coord offset) scr_size chart_size = size-chart_offset-scr_size(10,4+LINESPACE); sint64 last_year=0, tmp=0; - char cmin[128] = "0", cmax[128] = "0", digit[8]; + char cmin[128] = "0", cmax[128] = "0", digit[11]; sint64 baseline = 0; sint64* pbaseline = &baseline; diff --git a/gui/load_relief_frame.cc b/gui/load_relief_frame.cc index 6822750b4..d735316ca 100644 --- a/gui/load_relief_frame.cc +++ b/gui/load_relief_frame.cc @@ -34,7 +34,7 @@ bool load_relief_frame_t::item_action(const char *fullpath) load_relief_frame_t::load_relief_frame_t(settings_t* const sets) : savegame_frame_t( NULL, false, "maps/", env_t::show_delete_buttons ) { - static char extra_path[1024]; + static char extra_path[1029]; new_format.init( button_t::square_automatic, "Maximize height levels", scr_coord(D_MARGIN_LEFT,savebutton.get_pos().y), scr_size(savebutton.get_pos().x-D_MARGIN_LEFT-D_H_SPACE,D_BUTTON_HEIGHT) ); new_format.pressed = env_t::new_height_map_conversion; diff --git a/gui/savegame_frame.cc b/gui/savegame_frame.cc index 87659b2d6..f2a68581d 100644 --- a/gui/savegame_frame.cc +++ b/gui/savegame_frame.cc @@ -744,7 +744,7 @@ void savegame_frame_t::shorten_path(char *dest,const char *source,const size_t m const int odd = max_size%2; strncpy(dest,source,half-1); - strncpy(&dest[half-1],"...",3); + memcpy(&dest[half-1],"...",sizeof(char) * 3); strcpy(&dest[half+2],&source[orig_size-half+2-odd]); } diff --git a/obj/baum.cc b/obj/baum.cc index 18c6e47c4..7af3306e2 100644 --- a/obj/baum.cc +++ b/obj/baum.cc @@ -269,7 +269,7 @@ bool baum_t::successfully_loaded() tree_list_per_climate = new weighted_vector_tpl[MAX_CLIMATES]; // clear cache - memset( tree_id_to_image, -1, lengthof(tree_id_to_image) ); + memset( tree_id_to_image, -1, sizeof(tree_id_to_image) ); // now register all trees for all fitting climates for( uint32 typ=0; typ search for demo games if( new_world ) { dr_chdir( env_t::program_dir ); - char buffer[256]; + char buffer[1032]; sprintf(buffer, "%s%sdemo.sve", (const char*)env_t::program_dir, env_t::objfilename.c_str()); // access did not work! if (FILE* const f = dr_fopen(buffer, "rb")) { diff --git a/utils/cbuffer_t.cc b/utils/cbuffer_t.cc index 32df7b2df..48eb0251b 100644 --- a/utils/cbuffer_t.cc +++ b/utils/cbuffer_t.cc @@ -259,7 +259,7 @@ static int my_vsnprintf(char *buf, size_t n, const char* fmt, va_list ap ) if( const char *c=strstr( fmt, "%1$" ) ) { // but they are requested here ... // our routine can only handle max. 9 parameters - char pos[6]; + char pos[14]; static char format_string[256]; char *cfmt = format_string; static char buffer[16000]; // the longest possible buffer ...