diff options
| author | jackpoz <giacomopoz@gmail.com> | 2015-04-04 20:20:04 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2015-04-04 20:20:04 +0200 |
| commit | d23538ce568773f474ef20b4ca8217e0b218e65e (patch) | |
| tree | f560ae0d2404d899f4ac1ce0519d9f70762103bd /src/tools/vmap4_extractor | |
| parent | 5f77145f49ce2358821e02a478de0fe5f9f3c98c (diff) | |
Core/Misc: Fix issues reported by static analysis
Coverity defect IDs: 1227510, 1227434, 1023036, 1062426, 1062425, 1062424, 1062423, 1062422
Diffstat (limited to 'src/tools/vmap4_extractor')
| -rw-r--r-- | src/tools/vmap4_extractor/vmapexport.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 4cec49ef333..7a12897563e 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -197,7 +197,7 @@ bool ExtractSingleWmo(std::string& fname) for (uint32 i = 0; i < froot.nGroups; ++i) { char temp[1024]; - strcpy(temp, fname.c_str()); + strncpy(temp, fname.c_str(), 1024); temp[fname.length()-4] = 0; char groupFileName[1024]; sprintf(groupFileName, "%s_%03u.wmo", temp, i); @@ -395,7 +395,9 @@ bool processArgv(int argc, char ** argv, const char *versionString) if((i+1)<argc) { hasInputPathParam = true; - strcpy(input_path, argv[i+1]); + strncpy(input_path, argv[i + 1], sizeof(input_path)); + input_path[sizeof(input_path) - 1] = '\0'; + if (input_path[strlen(input_path) - 1] != '\\' && input_path[strlen(input_path) - 1] != '/') strcat(input_path, "/"); ++i; @@ -511,11 +513,22 @@ int main(int argc, char ** argv) map_ids=new map_id[map_count]; for (unsigned int x=0;x<map_count;++x) { - map_ids[x].id=dbc->getRecord (x).getUInt(0); - strcpy(map_ids[x].name,dbc->getRecord(x).getString(1)); - printf("Map - %s\n",map_ids[x].name); - } + map_ids[x].id = dbc->getRecord(x).getUInt(0); + + const char* map_name = dbc->getRecord(x).getString(1); + size_t max_map_name_length = sizeof(map_ids[x].name); + if (strlen(map_name) >= max_map_name_length) + { + delete dbc; + delete[] map_ids; + printf("FATAL ERROR: Map name too long.\n"); + return 1; + } + strncpy(map_ids[x].name, map_name, max_map_name_length); + map_ids[x].name[max_map_name_length - 1] = '\0'; + printf("Map - %s\n", map_ids[x].name); + } delete dbc; ParsMapFiles(); |
