From c820bddd749e2d13c729095e54070fc3dbff3426 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 24 Mar 2014 08:51:04 +0100 Subject: [PATCH] wbemprox: Fixed leaks in fill_datafile (Coverity). --- dlls/wbemprox/builtin.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c index 66f28823a9c..9fda5072db0 100644 --- a/dlls/wbemprox/builtin.c +++ b/dlls/wbemprox/builtin.c @@ -1270,11 +1270,13 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c DWORD drives = GetLogicalDrives(); WIN32_FIND_DATAW data; HANDLE handle; - struct dirstack *dirstack = alloc_dirstack(2); + struct dirstack *dirstack; enum fill_status status = FILL_STATUS_UNFILTERED; if (!resize_table( table, 8, sizeof(*rec) )) return FILL_STATUS_FAILED; + dirstack = alloc_dirstack(2); + for (i = 0; i < sizeof(drives); i++) { if (!(drives & (1 << i))) continue; @@ -1300,6 +1302,7 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c if (!resize_table( table, row + 1, sizeof(*rec) )) { status = FILL_STATUS_FAILED; + FindClose( handle ); goto done; } if (!strcmpW( data.cFileName, dotW ) || !strcmpW( data.cFileName, dotdotW )) continue; @@ -1309,6 +1312,7 @@ static enum fill_status fill_datafile( struct table *table, const struct expr *c { if (push_dir( dirstack, new_path, len )) continue; heap_free( new_path ); + FindClose( handle ); status = FILL_STATUS_FAILED; goto done; } -- 2.11.4.GIT