From 57f2c5983f785c63c7a29af0cfcc29f6b46e1315 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 Oct 2015 15:38:42 +0200 Subject: [PATCH] Avoid SEGV when handling SIDs with 0 subauthorities * sec_helper.cc (cygsid::get_sid): Don't reject SIDs with missing subauthorities. Signed-off-by: Corinna Vinschen --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/release/2.3.0 | 3 +++ winsup/cygwin/sec_helper.cc | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index d3a47a4f2..0c7c5a9c7 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2015-10-22 Corinna Vinschen + + * sec_helper.cc (cygsid::get_sid): Don't reject SIDs with missing + subauthorities. + 2015-10-22 Corinna Vinschen * strfuncs.cc (sys_cp_wcstombs): Always return number of multibytes diff --git a/winsup/cygwin/release/2.3.0 b/winsup/cygwin/release/2.3.0 index 99ef120ec..e3abb20ce 100644 --- a/winsup/cygwin/release/2.3.0 +++ b/winsup/cygwin/release/2.3.0 @@ -46,3 +46,6 @@ Bug Fixes - Fix memory leak in calls to pthread_getattr_np. - Fix output of /proc//winexename. + +- Avoid SEGV when handling SIDs with 0 subauthorities. + Addresses: https://cygwin.com/ml/cygwin/2015-10/msg00141.html diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc index 551face2a..af3307eb4 100644 --- a/winsup/cygwin/sec_helper.cc +++ b/winsup/cygwin/sec_helper.cc @@ -220,7 +220,10 @@ cygsid::get_sid (DWORD s, DWORD cnt, DWORD *r, bool well_known) SID_IDENTIFIER_AUTHORITY sid_auth = { SECURITY_NULL_SID_AUTHORITY }; # define SECURITY_NT_AUTH 5 - if (s > 255 || cnt < 1 || cnt > SID_MAX_SUB_AUTHORITIES) + /* 2015-10-22: Note that we let slip SIDs with a subauthority count of 0. + There are systems, which generate the SID S-1-0 as group ownership SID, + see https://cygwin.com/ml/cygwin/2015-10/msg00141.html. */ + if (s > 255 || cnt > SID_MAX_SUB_AUTHORITIES) { psid = NO_SID; return NULL; -- 2.43.5