ghes_edac: Use snprintf() to silence a static checker warning
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 1 Aug 2014 08:25:14 +0000 (11:25 +0300)
committerBorislav Petkov <bp@suse.de>
Tue, 11 Nov 2014 17:08:56 +0000 (18:08 +0100)
My static checker complains because the "e->location" has up to 256
characters but we are copying it into the "pvt->detail_location" which
only has space for 240 characters.  That's not counting the surrounding
text and the "e->other_detail" string which can be over 80 characters
long.

I am not familiar with this code but presumably it normally works.
Let's add a limit though for safety.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Link: http://lkml.kernel.org/r/20140801082514.GD28869@mwanda
Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/ghes_edac.c

index 8399b4e16fe0916683ceb075ff3cb2b49e4baa5b..b24681998740033664331ed4ba5d8ced56af63d0 100644 (file)
@@ -413,8 +413,8 @@ void ghes_edac_report_mem_error(struct ghes *ghes, int sev,
 
        /* Generate the trace event */
        grain_bits = fls_long(e->grain);
-       sprintf(pvt->detail_location, "APEI location: %s %s",
-               e->location, e->other_detail);
+       snprintf(pvt->detail_location, sizeof(pvt->detail_location),
+                "APEI location: %s %s", e->location, e->other_detail);
        trace_mc_event(type, e->msg, e->label, e->error_count,
                       mci->mc_idx, e->top_layer, e->mid_layer, e->low_layer,
                       PAGES_TO_MiB(e->page_frame_number) | e->offset_in_page,