From bae9427dc1abd29f03a524e4f30667876682600e Mon Sep 17 00:00:00 2001 From: Vivia Nikolaidou Date: Thu, 9 Nov 2017 00:16:21 +0200 Subject: [PATCH] decklink: Don't crash when getting hw serial number doesn't return OK If the return value isn't OK, it means we might be getting data that points to an invalid memory address. That shouldn't make us crash. --- sys/decklink/gstdecklink.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp index 58af0c6..85498c9 100644 --- a/sys/decklink/gstdecklink.cpp +++ b/sys/decklink/gstdecklink.cpp @@ -1239,11 +1239,13 @@ init_devices (gpointer data) devices[i].input. config->GetString (bmdDeckLinkConfigDeviceInformationSerialNumber, (COMSTR_T *) & serial_number); - CONVERT_COM_STRING (serial_number); - devices[i].output.hw_serial_number = g_strdup (serial_number); - devices[i].input.hw_serial_number = g_strdup (serial_number); - GST_DEBUG ("device %d has serial number %s", i, serial_number); - FREE_COM_STRING (serial_number); + if (ret == S_OK) { + CONVERT_COM_STRING (serial_number); + devices[i].output.hw_serial_number = g_strdup (serial_number); + devices[i].input.hw_serial_number = g_strdup (serial_number); + GST_DEBUG ("device %d has serial number %s", i, serial_number); + FREE_COM_STRING (serial_number); + } } ret = decklink->QueryInterface (IID_IDeckLinkAttributes, -- 2.7.4