summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/security.h9
2 files changed, 11 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5ab8a2a6a..c265b202f 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * security.h (cygsidlist::+=): Correctly copy well_known_sid info from
+ source cygsid.
+
2012-05-25 Corinna Vinschen <corinna@vinschen.de>
* registry.cc (reg_key::build_reg): Fix typo in debug output.
diff --git a/winsup/cygwin/security.h b/winsup/cygwin/security.h
index 6629260d2..907cbe766 100644
--- a/winsup/cygwin/security.h
+++ b/winsup/cygwin/security.h
@@ -1,7 +1,7 @@
/* security.h: security declarations
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010, 2011 Red Hat, Inc.
+ 2010, 2011, 2012 Red Hat, Inc.
This file is part of Cygwin.
@@ -223,9 +223,12 @@ public:
/* += adds a "normal" SID, *= adds a well-known SID. See comment in class
cygsid above. */
- BOOL operator+= (cygsid &si) { return add ((PSID) si, false); }
+ BOOL operator+= (cygsid &si) { return add ((PSID) si,
+ si.is_well_known_sid ()); }
BOOL operator+= (const char *sidstr) { cygsid nsi (sidstr);
- return add ((PSID) nsi, false); }
+ return add ((PSID) nsi,
+ nsi.is_well_known_sid ());
+ }
BOOL operator+= (const PSID psid) { return add (psid, false); }
BOOL operator*= (cygsid &si) { return add ((PSID) si, true); }
BOOL operator*= (const char *sidstr) { cygsid nsi (sidstr);