[PATCH 0/2] MR1795: wldap32: Free resource in error case and return error code (Coverity)
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1795
From: Fabian Maurer <dark.shadow4(a)web.de> Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de> --- dlls/wldap32/misc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/wldap32/misc.c b/dlls/wldap32/misc.c index edf1f196353..a8d27a87b78 100644 --- a/dlls/wldap32/misc.c +++ b/dlls/wldap32/misc.c @@ -413,12 +413,18 @@ ULONG CDECL WLDAP32_ldap_result( LDAP *ld, ULONG msgid, ULONG all, struct l_time ret = ldap_result( CTX(ld), msgid, all, timeout ? &timeval : NULL, &msgU ); } - if (msgU && (msg = calloc( 1, sizeof(*msg) ))) + + if (!msgU) + return ret; + + if (!(msg = calloc( 1, sizeof(*msg) ))) { - MSG(msg) = msgU; - *res = msg; + free( msgU ); + return WLDAP32_LDAP_NO_MEMORY; } + MSG(msg) = msgU; + *res = msg; return ret; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1795
From: Fabian Maurer <dark.shadow4(a)web.de> Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de> --- dlls/wldap32/misc.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/dlls/wldap32/misc.c b/dlls/wldap32/misc.c index a8d27a87b78..f515698d095 100644 --- a/dlls/wldap32/misc.c +++ b/dlls/wldap32/misc.c @@ -218,13 +218,19 @@ WCHAR * CDECL ldap_first_attributeW( LDAP *ld, WLDAP32_LDAPMessage *entry, WLDAP if (ld && entry) retU = ldap_first_attribute( CTX(ld), MSG(entry), &berU ); else return NULL; - if (retU && (ber = malloc( sizeof(*ber) ))) + if (!retU) + return NULL; + + if (!(ber = malloc( sizeof(*ber) ))) { - ber->opaque = (char *)berU; - *ptr = ber; - ret = strUtoW( retU ); + ld->ld_errno = WLDAP32_LDAP_NO_MEMORY; + ldap_memfree( retU ); + return NULL; } + ber->opaque = (char *)berU; + *ptr = ber; + ret = strUtoW( retU ); ldap_memfree( retU ); return ret; } @@ -358,12 +364,18 @@ WLDAP32_LDAPMessage * CDECL WLDAP32_ldap_next_entry( LDAP *ld, WLDAP32_LDAPMessa if (entry->lm_next) return entry->lm_next; msgU = ldap_next_entry( CTX(ld), MSG(entry) ); - if (msgU && (msg = calloc( 1, sizeof(*msg) ))) + + if (!msgU) + return NULL; + + if (!(msg = calloc( 1, sizeof(*msg) ))) { - MSG(msg) = msgU; - entry->lm_next = msg; + ld->ld_errno = WLDAP32_LDAP_NO_MEMORY; + return NULL; } + MSG(msg) = msgU; + entry->lm_next = msg; return msg; } @@ -382,12 +394,18 @@ WLDAP32_LDAPMessage * CDECL WLDAP32_ldap_next_reference( LDAP *ld, WLDAP32_LDAPM if (entry->lm_next) return entry->lm_next; msgU = ldap_next_reference( CTX(ld), MSG(entry) ); - if (msgU && (msg = calloc( 1, sizeof(*msg) ))) + + if (!msgU) + return NULL; + + if (!(msg = calloc( 1, sizeof(*msg) ))) { - MSG(msg) = msgU; - entry->lm_next = msg; + ld->ld_errno = WLDAP32_LDAP_NO_MEMORY; + return NULL; } + MSG(msg) = msgU; + entry->lm_next = msg; return msg; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1795
This merge request was approved by Hans Leidekker. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1795
participants (3)
-
Fabian Maurer -
Fabian Maurer (@DarkShadow44) -
Hans Leidekker (@hans)