fix some potential buffer-overflows

This commit is contained in:
condret 2017-04-23 22:25:39 +00:00
parent 1ba2eefebe
commit a9b1251b88
1 changed files with 15 additions and 11 deletions

View File

@ -265,7 +265,7 @@ CompileUnit* elfGetCompileUnit(uint32_t addr)
const char* elfGetAddressSymbol(uint32_t addr) const char* elfGetAddressSymbol(uint32_t addr)
{ {
static char buffer[256]; static char buffer[256]; //defining globalscope here just feels so wrong
CompileUnit* unit = elfGetCompileUnit(addr); CompileUnit* unit = elfGetCompileUnit(addr);
// found unit, need to find function // found unit, need to find function
@ -278,9 +278,11 @@ const char* elfGetAddressSymbol(uint32_t addr)
if (!name) if (!name)
name = ""; name = "";
if (offset) if (offset)
sprintf(buffer, "%s+%d", name, offset); snprintf(buffer, 256, "%s+%d", name, offset);
else else {
strcpy(buffer, name); strncpy(buffer, name, 255); //strncpy does not allways append a '\0'
buffer[255] = '\0';
}
return buffer; return buffer;
} }
func = func->next; func = func->next;
@ -296,20 +298,22 @@ const char* elfGetAddressSymbol(uint32_t addr)
if (name == NULL) if (name == NULL)
name = ""; name = "";
if (offset) if (offset)
sprintf(buffer, "%s+%d", name, addr - s->value); snprintf(buffer, 256,"%s+%d", name, addr - s->value);
else else {
strcpy(buffer, name); strncpy(buffer, name, 255);
buffer[255] = '\0';
}
return buffer; return buffer;
} else if (addr == s->value) { } else if (addr == s->value) {
if (s->name) if (s->name) {
strcpy(buffer, s->name); strncpy(buffer, s->name, 255);
else buffer[255] = '\0';
} else
strcpy(buffer, ""); strcpy(buffer, "");
return buffer; return buffer;
} }
} }
} }
return ""; return "";
} }