Patrick Georgi has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/32290 )
Change subject: Klocwork: Fix the Null pointer derefernce found by klocwork ......................................................................
Klocwork: Fix the Null pointer derefernce found by klocwork
Signed-off-by: Thejaswani Putta thejaswani.putta@intel.com Change-Id: I15973ac28e9645826986cf63d2160eedb83024e4 Reviewed-on: https://review.coreboot.org/c/coreboot/+/32290 Reviewed-by: Julius Werner jwerner@chromium.org Reviewed-by: Lijian Zhao lijian.zhao@intel.com Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/lib/string.c M src/soc/intel/broadwell/ramstage.c M util/cbfstool/cbfs_sections.c 3 files changed, 14 insertions(+), 3 deletions(-)
Approvals: build bot (Jenkins): Verified Julius Werner: Looks good to me, approved Lijian Zhao: Looks good to me, approved
diff --git a/src/lib/string.c b/src/lib/string.c index df2fd80..2e71489f 100644 --- a/src/lib/string.c +++ b/src/lib/string.c @@ -6,7 +6,8 @@ { size_t sz = strlen(s) + 1; char *d = malloc(sz); - memcpy(d, s, sz); + if (d) + memcpy(d, s, sz); return d; }
@@ -15,7 +16,9 @@ size_t sz_1 = strlen(s1); size_t sz_2 = strlen(s2); char *d = malloc(sz_1 + sz_2 + 1); - memcpy(d, s1, sz_1); - memcpy(d + sz_1, s2, sz_2 + 1); + if (d) { + memcpy(d, s1, sz_1); + memcpy(d + sz_1, s2, sz_2 + 1); + } return d; } diff --git a/src/soc/intel/broadwell/ramstage.c b/src/soc/intel/broadwell/ramstage.c index e1883f2..7065369 100644 --- a/src/soc/intel/broadwell/ramstage.c +++ b/src/soc/intel/broadwell/ramstage.c @@ -23,6 +23,7 @@ #include <soc/ramstage.h> #include <soc/intel/broadwell/chip.h> #include <soc/intel/common/acpi.h> +#include <assert.h>
/* Save wake source information for calculating ACPI _SWS values */ int soc_fill_acpi_wake(uint32_t *pm1, uint32_t **gpe0) @@ -31,6 +32,8 @@ static uint32_t gpe0_sts[GPE0_REG_MAX]; int i;
+ assert(ps != NULL); + *pm1 = ps->pm1_sts & ps->pm1_en;
/* Mask off GPE0 status bits that are not enabled */ diff --git a/util/cbfstool/cbfs_sections.c b/util/cbfstool/cbfs_sections.c index 2857257..088534a 100644 --- a/util/cbfstool/cbfs_sections.c +++ b/util/cbfstool/cbfs_sections.c @@ -14,6 +14,7 @@ */
#include "cbfs_sections.h" +#include "common.h"
#include <assert.h> #include <stdlib.h> @@ -65,6 +66,10 @@ return false;
list_node = (struct descriptor_node *)malloc(sizeof(*list_node)); + if (!list_node) { + ERROR("Cannot allocate CBFS flag node!\n"); + return false; + } list_node->val = node; list_node->next = NULL;