Skip to content

Commit

Permalink
StdLib/BsdSocketLib: Fix minor memory leak by freeing rrecp on error …
Browse files Browse the repository at this point in the history
…return.

The error return is triggered by one of two conditions:
  1.  rrecp is NULL (calloc failed)
  2.  strdup(dname) returns NULL

Previously, the function just returned NULL.  This patch adds a call to
free rrecp before returning NULL.  Since the free() function will properly
do nothing when called with a NULL parameter, it is not necessary to
separate the two tests into separate if clauses.

Reported-by: Colin King <colin.king@canonical.com>

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Daryl McDaniel <edk2-lists@mc2research.org>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
  • Loading branch information
darylm503 committed Feb 18, 2016
1 parent ea3e924 commit 7053c3b
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion StdLib/BsdSocketLib/res_mkupdate.c
Expand Up @@ -438,8 +438,10 @@ res_mkupdrec(int section, const char *dname,
u_int class, u_int type, u_long ttl) {
ns_updrec *rrecp = (ns_updrec *)calloc(1, sizeof(ns_updrec));

if (!rrecp || !(rrecp->r_dname = strdup(dname)))
if (!rrecp || !(rrecp->r_dname = strdup(dname))) {
free(rrecp);
return (NULL);
}
rrecp->r_class = (u_int16_t)class;
rrecp->r_type = (u_int16_t)type;
rrecp->r_ttl = (u_int32_t)ttl;
Expand Down

0 comments on commit 7053c3b

Please sign in to comment.