Module: wine Branch: master Commit: 609d43e4086188838e0900477db5651709ef36be URL: http://source.winehq.org/git/wine.git/?a=commit;h=609d43e4086188838e0900477d...
Author: Sebastian Lackner sebastian@fds-team.de Date: Mon Nov 17 19:15:20 2014 +0100
server: Avoid leaking file descriptors if create_console_input fails.
---
server/console.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/server/console.c b/server/console.c index 2a5ca80..b7f8206 100644 --- a/server/console.c +++ b/server/console.c @@ -299,7 +299,11 @@ static struct object *create_console_input( struct thread* renderer, int fd ) { struct console_input *console_input;
- if (!(console_input = alloc_object( &console_input_ops ))) return NULL; + if (!(console_input = alloc_object( &console_input_ops ))) + { + if (fd != -1) close( fd ); + return NULL; + } console_input->renderer = renderer; console_input->mode = ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_INSERT_MODE | @@ -323,8 +327,9 @@ static struct object *create_console_input( struct thread* renderer, int fd )
if (!console_input->history || (renderer && !console_input->evt) || !console_input->event) { - release_object( console_input ); - return NULL; + if (fd != -1) close( fd ); + release_object( console_input ); + return NULL; } if (fd != -1) /* bare console */ {