diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c index ae17e9c1e..a15baeb7f 100644 --- a/tests/server/sockfilt.c +++ b/tests/server/sockfilt.c @@ -562,6 +562,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds, /* allocate internal array for the internal event handles */ handles = malloc(nfds * sizeof(HANDLE)); if(handles == NULL) { + free(fdarr); errno = ENOMEM; return -1; } @@ -569,6 +570,8 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds, /* allocate internal array for the internal socket handles */ wsasocks = malloc(nfds * sizeof(curl_socket_t)); if(wsasocks == NULL) { + free(handles); + free(fdarr); errno = ENOMEM; return -1; } @@ -576,6 +579,9 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds, /* allocate internal array for the internal WINSOCK2 events */ wsaevents = malloc(nfds * sizeof(WSAEVENT)); if(wsaevents == NULL) { + free(wsasocks); + free(handles); + free(fdarr); errno = ENOMEM; return -1; }