panic: panicinfo filename OOB fix

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@linux.intel.com>
This commit is contained in:
Adrian Bonislawski 2019-04-09 14:07:23 +02:00 committed by Tomasz Lauda
parent cba12f12a8
commit 25dd45f443
2 changed files with 10 additions and 2 deletions

View File

@ -86,7 +86,9 @@ struct sof_ipc_dma_trace_posn {
#define SOF_IPC_PANIC_WFI (SOF_IPC_PANIC_MAGIC | 0xa)
#define SOF_IPC_PANIC_ASSERT (SOF_IPC_PANIC_MAGIC | 0xb)
/* panic info include filename and line number */
/* panic info include filename and line number
* filename array will not include null terminator if fully filled
*/
struct sof_ipc_panic_info {
struct sof_ipc_hdr hdr;
uint32_t code; /* SOF_IPC_PANIC_ */

View File

@ -99,8 +99,14 @@ void __panic(uint32_t p, char *filename, uint32_t linenum)
int strlen;
strlen = rstrlen(filename);
if (strlen >= SOF_TRACE_FILENAME_SIZE) {
rmemcpy(panicinfo.filename, filename + strlen -
SOF_TRACE_FILENAME_SIZE, SOF_TRACE_FILENAME_SIZE);
rmemcpy(panicinfo.filename, "...", 3);
} else {
rmemcpy(panicinfo.filename, filename, strlen + 1);
}
panicinfo.linenum = linenum;
rmemcpy(panicinfo.filename, filename, strlen + 1);
panic_rewind(p, 0, &panicinfo);
}