diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-10-21 12:46:32 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-10-21 12:46:32 +0200 |
commit | c0345822e502f45b412ab595e14c51dfdae5aaef (patch) | |
tree | c3d1bb4366a154b3f914943db4d3c96a916b7fb6 /winsup/cygwin | |
parent | 713161b28b85b7ce05c27a46c52b0780b96047ce (diff) | |
download | cygnal-c0345822e502f45b412ab595e14c51dfdae5aaef.tar.gz cygnal-c0345822e502f45b412ab595e14c51dfdae5aaef.tar.bz2 cygnal-c0345822e502f45b412ab595e14c51dfdae5aaef.zip |
Fix memory leak in pthread_getattr_np
* thread.cc (pthread_getattr_np): Fix memory leak, remove usage of
malloc for small local buffer.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/release/2.3.0 | 2 | ||||
-rw-r--r-- | winsup/cygwin/thread.cc | 8 |
3 files changed, 10 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 5d2675d6d..4cbbd0b10 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2015-10-21 Corinna Vinschen <corinna@vinschen.de> + * thread.cc (pthread_getattr_np): Fix memory leak, remove usage of + malloc for small local buffer. + +2015-10-21 Corinna Vinschen <corinna@vinschen.de> + * path.cc (symlink_info::check_reparse_point): Don't generate an EIO error if NtFsControlFile returns STATUS_NOT_A_REPARSE_POINT. diff --git a/winsup/cygwin/release/2.3.0 b/winsup/cygwin/release/2.3.0 index f2391a966..d6fda3b82 100644 --- a/winsup/cygwin/release/2.3.0 +++ b/winsup/cygwin/release/2.3.0 @@ -39,3 +39,5 @@ Bug Fixes - Fix EIO error accessing certain (OS X SMB?) drives Addresses: https://cygwin.com/ml/cygwin/2015-09/msg00229.html + +- Fix memory leak in calls to pthread_getattr_np. diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index b92a80620..d9b62111f 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -2485,8 +2485,7 @@ pthread::resume (pthread_t *thread) extern "C" int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr) { - const size_t sizeof_tbi = sizeof (THREAD_BASIC_INFORMATION); - PTHREAD_BASIC_INFORMATION tbi; + THREAD_BASIC_INFORMATION tbi; NTSTATUS status; if (!pthread::is_good_object (&thread)) @@ -2506,13 +2505,12 @@ pthread_getattr_np (pthread_t thread, pthread_attr_t *attr) (*attr)->schedparam = thread->attr.schedparam; (*attr)->guardsize = thread->attr.guardsize; - tbi = (PTHREAD_BASIC_INFORMATION) malloc (sizeof_tbi); status = NtQueryInformationThread (thread->win32_obj_id, ThreadBasicInformation, - tbi, sizeof_tbi, NULL); + &tbi, sizeof (tbi), NULL); if (NT_SUCCESS (status)) { - PTEB teb = (PTEB) tbi->TebBaseAddress; + PTEB teb = (PTEB) tbi.TebBaseAddress; /* stackaddr holds the uppermost stack address. See the comments in pthread_attr_setstack and pthread_attr_setstackaddr for a description. */ |