From 951bc34df496e1f8fa31db778534ea3c86f71827 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 May 2014 12:07:12 +0000 Subject: [PATCH] * uinfo.cc (pwdgrp::fetch_account_from_windows): Tweak SID<->uid conversion to cover S-1-5-113, S-1-5-114, and S-1-5-1000 groups. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/uinfo.cc | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 99a843935..a9c3f9f02 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2014-05-07 Corinna Vinschen + + * uinfo.cc (pwdgrp::fetch_account_from_windows): Tweak SID<->uid + conversion to cover S-1-5-113, S-1-5-114, and S-1-5-1000 groups. + 2014-05-07 Corinna Vinschen * grp.cc (pwdgrp::parse_group): Set grp.len. Drop generating any diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 1de113202..5d69f4236 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -1271,6 +1271,8 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) by mkpasswd/mkgroup. */ if (arg.id < 0x200) __small_swprintf (sidstr, L"S-1-5-%u", arg.id & 0x1ff); + else if (arg.id == 0x3e8) /* Special case "Other Organization" */ + wcpcpy (sidstr, L"S-1-5-1000"); else if (arg.id <= 0x7ff) __small_swprintf (sidstr, L"S-1-5-32-%u", arg.id & 0x7ff); else @@ -1659,7 +1661,8 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) if (sid_id_auth (sid) != 5 /* SECURITY_NT_AUTHORITY */) uid = 0x10000 + 0x100 * sid_id_auth (sid) + (sid_sub_auth_rid (sid) & 0xff); - else if (sid_sub_auth (sid, 0) < SECURITY_PACKAGE_BASE_RID) + else if (sid_sub_auth (sid, 0) < SECURITY_PACKAGE_BASE_RID + || sid_sub_auth (sid, 0) > SECURITY_MAX_BASE_RID) uid = sid_sub_auth_rid (sid) & 0x7ff; else { -- 2.43.5