From 7b3d134fae8cec0424da1e6bf80e00a38dac93eb Mon Sep 17 00:00:00 2001 From: JackBurton79 Date: Thu, 25 Aug 2022 22:58:08 +0200 Subject: [PATCH] Screen preflet: fix possible NULL pointer dereference Change-Id: Ia343cb2cba23f02d5504dfb849a059f041138119 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5571 Reviewed-by: waddlesplash --- src/preferences/screen/ScreenMode.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/preferences/screen/ScreenMode.cpp b/src/preferences/screen/ScreenMode.cpp index 1296b661e6..59ca45b4cd 100644 --- a/src/preferences/screen/ScreenMode.cpp +++ b/src/preferences/screen/ScreenMode.cpp @@ -382,6 +382,8 @@ ScreenMode::GetManufacturerFromID(const char* id) const const size_t numElements = sizeof(kPNPIDs) / sizeof(kPNPIDs[0]); const struct pnp_id key = { id, "dummy" }; const pnp_id* element = std::find(kPNPIDs, kPNPIDs + numElements, key); + if (element == NULL) + return NULL; return element->manufacturer; } @@ -411,7 +413,9 @@ ScreenMode::GetMonitorInfo(monitor_info& info, float* _diagonalInches) char vendor[4]; strlcpy(vendor, info.vendor, sizeof(vendor)); - strlcpy(info.vendor, GetManufacturerFromID(vendor), sizeof(info.vendor)); + const char* vendorString = GetManufacturerFromID(vendor); + if (vendorString != NULL) + strlcpy(info.vendor, vendorString, sizeof(info.vendor)); // Remove extraneous vendor strings and whitespace