Procházet zdrojové kódy

dsp-kernel: use memcpy() instead of strcpy()

Current code uses strcpy() to copy strings, which has a problem with potential buffer overflows if the source string is longer than the destination buffer. We can improve this by using memcpy() with a specified length, because it allows us to control the number of bytes copied and thus prevent buffer overflows.

Change-Id: I9dd5da343bfd63e4e031a66fa26b103e3da573e0
Signed-off-by: mingzh <[email protected]>
mingzh před 8 měsíci
rodič
revize
d064f9840e
1 změnil soubory, kde provedl 8 přidání a 2 odebrání
  1. 8 2
      dsp/fastrpc_trace.h

+ 8 - 2
dsp/fastrpc_trace.h

@@ -385,7 +385,10 @@ TRACE_EVENT(fastrpc_msg,
 		memcpy(__get_str(buf), (message), (sizeof(message) - 1));
 		__get_str(buf)[sizeof(message) - 1] = '\0';
 #else
-		__assign_str(buf, message);
+		if (message)
+			__assign_str_len(buf, message, (sizeof(message) - 1));
+		else
+			memcpy(__get_str(buf), "(null)", sizeof("(null)"));
 #endif
 	),
 	TP_printk(" %s", __get_str(buf))
@@ -410,7 +413,10 @@ TRACE_EVENT(fastrpc_dspsignal,
 		memcpy(__get_str(buf), (event), (sizeof(event) - 1));
 		__get_str(buf)[sizeof(event) - 1] = '\0';
 #else
-		__assign_str(buf, event);
+		if (event)
+			__assign_str_len(buf, event, (sizeof(event) - 1));
+		else
+			memcpy(__get_str(buf), "(null)", sizeof("(null)"));
 #endif
 		__entry->signal_id = signal_id;
 		__entry->state = state;