Sebastian Lackner : server: Avoid leaking file descriptor on error in create_thread function.
Module: wine Branch: master Commit: 0e2e9e4efcaf72d1f50efc6fec8ca402951d1006 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0e2e9e4efcaf72d1f50efc6fec... Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Mon Nov 17 19:23:13 2014 +0100 server: Avoid leaking file descriptor on error in create_thread function. --- server/thread.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/thread.c b/server/thread.c index 97860ee..ba3f1d5 100644 --- a/server/thread.c +++ b/server/thread.c @@ -219,11 +219,16 @@ struct thread *create_thread( int fd, struct process *process ) if (process->is_terminating) { + close( fd ); set_error( STATUS_PROCESS_IS_TERMINATING ); return NULL; } - if (!(thread = alloc_object( &thread_ops ))) return NULL; + if (!(thread = alloc_object( &thread_ops ))) + { + close( fd ); + return NULL; + } init_thread_structure( thread ); @@ -236,6 +241,7 @@ struct thread *create_thread( int fd, struct process *process ) if (!(thread->id = alloc_ptid( thread ))) { + close( fd ); release_object( thread ); return NULL; }
participants (1)
-
Alexandre Julliard