From e63bd50a2ee4de726c29ad656335c456b900ed9a Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Tue, 6 Jul 2010 12:48:01 -0500 Subject: Bug 611790 - fix coverify Defect Type: Null pointer dereferences issues 11940 - 12166 https://bugzilla.redhat.com/show_bug.cgi?id=611790 Resolves: bug 611790 Bug description: Fix coverify Defect Type: Null pointer dereferences issues 11940 - 12166 Fix description: Catch possible NULL pointer in ResHashCreate(). --- lib/libsi18n/reshash.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/libsi18n/reshash.c b/lib/libsi18n/reshash.c index 898d02f5..4c8e9006 100644 --- a/lib/libsi18n/reshash.c +++ b/lib/libsi18n/reshash.c @@ -253,7 +253,7 @@ ResHash * ResHashCreate(char * name) /* Create hash table */ pResHash = (ResHash *) malloc (sizeof(ResHash)); if (pResHash == NULL) - return NULL; + goto error; memset(pResHash, 0, sizeof(ResHash)); @@ -262,11 +262,26 @@ ResHash * ResHashCreate(char * name) /* Create initial tree item and it's valuelist to hash table */ pResHash->treelist = (TreeNode *) malloc(sizeof(TreeNode)); - if (pResHash->treelist) - memset(pResHash->treelist, 0, sizeof(TreeNode)); + if (pResHash->treelist == NULL) + goto error; + + memset(pResHash->treelist, 0, sizeof(TreeNode)); + pResHash->treelist->vlist = (ValueNode *) malloc(sizeof(ValueNode)); + if (pResHash->treelist->vlist == NULL) + goto error; + memset(pResHash->treelist->vlist, 0, sizeof(ValueNode)); + goto done; + +error: + if (pResHash->treelist->vlist) free(pResHash->treelist->vlist); + if (pResHash->treelist) free(pResHash->treelist); + if (pResHash) free(pResHash); + return NULL; + +done: return pResHash; } -- cgit