about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-01-28 21:09:50 -0500
committerRich Felker <dalias@aerifal.cx>2012-01-28 21:09:50 -0500
commit4619901ec4b82d233a24e26ef3df01ddadc2d013 (patch)
tree837c6280bcbf1a92214a1b52ff73eca97eedd46b
parentc3db56c4cb2b5eb06cbf46b8fe526f4fe7e10321 (diff)
downloadmusl-4619901ec4b82d233a24e26ef3df01ddadc2d013.tar.gz
musl-4619901ec4b82d233a24e26ef3df01ddadc2d013.tar.xz
musl-4619901ec4b82d233a24e26ef3df01ddadc2d013.zip
add linux setfs[ug]id syscall wrappers
patch by Jeremy Huntwork
-rw-r--r--include/sys/fsuid.h20
-rw-r--r--src/linux/setfsgid.c8
-rw-r--r--src/linux/setfsuid.c8
3 files changed, 36 insertions, 0 deletions
diff --git a/include/sys/fsuid.h b/include/sys/fsuid.h
new file mode 100644
index 00000000..f62184c5
--- /dev/null
+++ b/include/sys/fsuid.h
@@ -0,0 +1,20 @@
+#ifndef	_FSUID_H
+#define	_FSUID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#include <bits/alltypes.h>
+
+int setfsuid(uid_t);
+int setfsgid(gid_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/linux/setfsgid.c b/src/linux/setfsgid.c
new file mode 100644
index 00000000..a7ed9e92
--- /dev/null
+++ b/src/linux/setfsgid.c
@@ -0,0 +1,8 @@
+#include <unistd.h>
+#include "syscall.h"
+#include "libc.h"
+
+int setfsgid(gid_t gid)
+{
+	return syscall(SYS_setfsgid, gid);
+}
diff --git a/src/linux/setfsuid.c b/src/linux/setfsuid.c
new file mode 100644
index 00000000..1509e0aa
--- /dev/null
+++ b/src/linux/setfsuid.c
@@ -0,0 +1,8 @@
+#include <unistd.h>
+#include "syscall.h"
+#include "libc.h"
+
+int setfsuid(uid_t uid)
+{
+	return syscall(SYS_setfsuid, uid);
+}