Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2003-11-04 18:48:19 +0300
committerCorinna Vinschen <corinna@vinschen.de>2003-11-04 18:48:19 +0300
commitbcd06214e106481e7a5e86560365cca8a3549752 (patch)
tree7c07b247d7e300e585d3f77853fdc938bfbde9e1 /winsup/cygwin
parentc35391d0d2b0c5fd057aa1ccd4c215a0082919d5 (diff)
* external.cc (cygwin_internal): Add CW_GET_POSIX_SECURITY_ATTRIBUTE
handling. * include/cygwin/version.h: Bump API minor number. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_POSIX_SECURITY_ATTRIBUTE. * exceptions.cc (init_global_security): Move from here... * sec_helper.cc (init_global_security): ...to here.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog11
-rw-r--r--winsup/cygwin/exceptions.cc14
-rw-r--r--winsup/cygwin/external.cc9
-rw-r--r--winsup/cygwin/include/cygwin/version.h3
-rw-r--r--winsup/cygwin/include/sys/cygwin.h3
-rw-r--r--winsup/cygwin/sec_helper.cc18
6 files changed, 42 insertions, 16 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index beea371aa..4bc145fab 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,14 @@
+2003-11-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * external.cc (cygwin_internal): Add CW_GET_POSIX_SECURITY_ATTRIBUTE
+ handling.
+ * include/cygwin/version.h: Bump API minor number.
+ * include/sys/cygwin.h (cygwin_getinfo_types): Add
+ CW_GET_POSIX_SECURITY_ATTRIBUTE.
+
+ * exceptions.cc (init_global_security): Move from here...
+ * sec_helper.cc (init_global_security): ...to here.
+
2003-11-04 Christopher Faylor <cgf@redhat.com>
* net.cc (dup_ent): Use IsBadStringPtr for alignment checks. Don't use
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 65d57b361..194aa3394 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -126,20 +126,6 @@ init_console_handler ()
system_printf ("SetConsoleCtrlHandler failed, %E");
}
-void
-init_global_security ()
-{
- /* Initialize global security attribute stuff */
-
- sec_none.nLength = sec_none_nih.nLength =
- sec_all.nLength = sec_all_nih.nLength = sizeof (SECURITY_ATTRIBUTES);
- sec_none.bInheritHandle = sec_all.bInheritHandle = TRUE;
- sec_none_nih.bInheritHandle = sec_all_nih.bInheritHandle = FALSE;
- sec_none.lpSecurityDescriptor = sec_none_nih.lpSecurityDescriptor = NULL;
- sec_all.lpSecurityDescriptor = sec_all_nih.lpSecurityDescriptor =
- get_null_sd ();
-}
-
extern "C" void
init_exceptions (exception_list *el)
{
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index 114a3de7c..839d38050 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -265,6 +265,15 @@ cygwin_internal (cygwin_getinfo_types t, ...)
int deferrno = va_arg (arg, int);
return geterrno_from_win_error (error, deferrno);
}
+ case CW_GET_POSIX_SECURITY_ATTRIBUTE:
+ {
+ int attribute = va_arg (arg, int);
+ PSECURITY_ATTRIBUTES psa = va_arg (arg, PSECURITY_ATTRIBUTES);
+ void *sd_buf = va_arg (arg, void *);
+ DWORD sd_buf_size = va_arg (arg, DWORD);
+ set_security_attribute (attribute, psa, sd_buf, sd_buf_size);
+ return psa->lpSecurityDescriptor ? 0 : -1;
+ }
default:
return (DWORD) -1;
}
diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h
index f2c033828..57ade5d66 100644
--- a/winsup/cygwin/include/cygwin/version.h
+++ b/winsup/cygwin/include/cygwin/version.h
@@ -223,13 +223,14 @@ details. */
96: CW_GET_ERRNO_FROM_WINERROR addition to external.cc
97: Export sem_open, sem_close, sem_timedwait, sem_getvalue.
98: Export _tmpfile64.
+ 99: CW_GET_POSIX_SECURITY_ATTRIBUTE addition to external.cc.
*/
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 98
+#define CYGWIN_VERSION_API_MINOR 99
/* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible
diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h
index d2e1a4171..4aec8c358 100644
--- a/winsup/cygwin/include/sys/cygwin.h
+++ b/winsup/cygwin/include/sys/cygwin.h
@@ -73,7 +73,8 @@ typedef enum
CW_EXTRACT_DOMAIN_AND_USER,
CW_CMDLINE,
CW_CHECK_NTSEC,
- CW_GET_ERRNO_FROM_WINERROR
+ CW_GET_ERRNO_FROM_WINERROR,
+ CW_GET_POSIX_SECURITY_ATTRIBUTE
} cygwin_getinfo_types;
#define CW_NEXTPID 0x80000000 /* or with pid to get next one */
diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc
index dda352543..ccd8d4487 100644
--- a/winsup/cygwin/sec_helper.cc
+++ b/winsup/cygwin/sec_helper.cc
@@ -371,6 +371,24 @@ get_null_sd ()
return null_sdp;
}
+/*
+ * Initialize global security attributes.
+ *
+ * Called from dcrt0.cc (_dll_crt0).
+ */
+
+void
+init_global_security ()
+{
+ sec_none.nLength = sec_none_nih.nLength =
+ sec_all.nLength = sec_all_nih.nLength = sizeof (SECURITY_ATTRIBUTES);
+ sec_none.bInheritHandle = sec_all.bInheritHandle = TRUE;
+ sec_none_nih.bInheritHandle = sec_all_nih.bInheritHandle = FALSE;
+ sec_none.lpSecurityDescriptor = sec_none_nih.lpSecurityDescriptor = NULL;
+ sec_all.lpSecurityDescriptor = sec_all_nih.lpSecurityDescriptor =
+ get_null_sd ();
+}
+
BOOL
sec_acl (PACL acl, bool original, bool admins, PSID sid1, PSID sid2, DWORD access2)
{