Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-06-23 18:56:45 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-06-23 18:56:45 +0400
commitf739fd3ef0716dd603f2c917f5e502d6a7f71f89 (patch)
tree419416f4e34ad1ad80f0584d66b6fe81796a942b /winsup/cygwin
parent565e3643dd3f12fc275d2fb0f7642b17afd00691 (diff)
* select.cc (start_thread_socket): Delete si on early return in case of
an error (CID 59967).
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/select.cc15
2 files changed, 17 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 77a612418..aedd345be 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2014-06-23 Corinna Vinschen <corinna@vinschen.de>
+ * select.cc (start_thread_socket): Delete si on early return in case of
+ an error (CID 59967).
+
+2014-06-23 Corinna Vinschen <corinna@vinschen.de>
+
* regex/regcomp.c (computematchjumps): Free local memory in case of
error (CID 59975).
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc
index e923f9161..e83d9a024 100644
--- a/winsup/cygwin/select.cc
+++ b/winsup/cygwin/select.cc
@@ -1414,7 +1414,10 @@ start_thread_socket (select_record *me, select_stuff *stuff)
si = new select_socket_info;
if (!init_tls_select_info ())
- return 0;
+ {
+ delete si;
+ return 0;
+ }
si->ser_num = _my_tls.locals.select.ser_num;
si->w4 = _my_tls.locals.select.w4;
@@ -1440,14 +1443,20 @@ start_thread_socket (select_record *me, select_stuff *stuff)
+ MAXIMUM_WAIT_OBJECTS)
* sizeof (LONG));
if (!nser)
- return 0;
+ {
+ delete si;
+ return 0;
+ }
_my_tls.locals.select.ser_num = si->ser_num = nser;
HANDLE *nw4 = (HANDLE *) realloc (si->w4,
(_my_tls.locals.select.max_w4
+ MAXIMUM_WAIT_OBJECTS)
* sizeof (HANDLE));
if (!nw4)
- return 0;
+ {
+ delete si;
+ return 0;
+ }
_my_tls.locals.select.w4 = si->w4 = nw4;
_my_tls.locals.select.max_w4 += MAXIMUM_WAIT_OBJECTS;
}