mirror of https://github.com/acidanthera/audk.git
StdLib/BsdSocketLib: Fix minor memory leak by freeing rrecp on error 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>
This commit is contained in:
parent
ea3e924a0c
commit
7053c3b3b3
|
@ -438,8 +438,10 @@ res_mkupdrec(int section, const char *dname,
|
||||||
u_int class, u_int type, u_long ttl) {
|
u_int class, u_int type, u_long ttl) {
|
||||||
ns_updrec *rrecp = (ns_updrec *)calloc(1, sizeof(ns_updrec));
|
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);
|
return (NULL);
|
||||||
|
}
|
||||||
rrecp->r_class = (u_int16_t)class;
|
rrecp->r_class = (u_int16_t)class;
|
||||||
rrecp->r_type = (u_int16_t)type;
|
rrecp->r_type = (u_int16_t)type;
|
||||||
rrecp->r_ttl = (u_int32_t)ttl;
|
rrecp->r_ttl = (u_int32_t)ttl;
|
||||||
|
|
Loading…
Reference in New Issue