The current behaviour of this function will dereference a null pointer if the serial# environment variable is unset. This was discovered on a board where U-Boot did not have access to the first 256MB of ram, resulting in a board crash. In the event that U-Boot has full access to memory, it will still read from address 0, which is probably not optimal. This simple check is enough to fix it.
Signed-off-by: Michael Ferolito <michaelsunn...@gmail.com> Cc: Marek Vasut <ma...@denx.de> Cc: Heiko Schocher <h...@denx.de> Cc: Lukasz Majewski <l.majew...@samsung.com> Cc: Kyungmin Park <kyungmin.p...@samsung.com> --- drivers/usb/gadget/g_dnl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/g_dnl.c b/drivers/usb/gadget/g_dnl.c index 631969b340..d56f9c485e 100644 --- a/drivers/usb/gadget/g_dnl.c +++ b/drivers/usb/gadget/g_dnl.c @@ -50,7 +50,8 @@ static const char manufacturer[] = CONFIG_USB_GADGET_MANUFACTURER; void g_dnl_set_serialnumber(char *s) { memset(g_dnl_serial, 0, MAX_STRING_SERIAL); - strncpy(g_dnl_serial, s, MAX_STRING_SERIAL - 1); + if (s) + strncpy(g_dnl_serial, s, MAX_STRING_SERIAL - 1); } static struct usb_device_descriptor device_desc = { -- 2.48.1