summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-07-30 15:05:09 -0700
committerElliott Hughes <enh@google.com>2014-07-30 16:18:03 -0700
commit4f76469e88e255bab1f8264e9ff8b95bff84365f (patch)
tree543b18b330d907c8b949ba4d4d5640ffb8b8331d
parentcd54195262ac5531fff892255849925ebbbd303e (diff)
downloadbionic-4f76469e88e255bab1f8264e9ff8b95bff84365f.zip
bionic-4f76469e88e255bab1f8264e9ff8b95bff84365f.tar.gz
bionic-4f76469e88e255bab1f8264e9ff8b95bff84365f.tar.bz2
Implement <sys/fsuid.h>.
(cherry picked from commit 79310994d2b3826a10598f7e7795acb5edb42a20) Change-Id: I47688273691e5c95e5e9302eba254ccaaaad40ca
-rw-r--r--libc/SYSCALLS.TXT3
-rw-r--r--libc/arch-arm/syscalls/setfsgid.S14
-rw-r--r--libc/arch-arm/syscalls/setfsuid.S14
-rw-r--r--libc/arch-arm64/syscalls/setfsgid.S14
-rw-r--r--libc/arch-arm64/syscalls/setfsuid.S14
-rw-r--r--libc/arch-mips/syscalls/setfsgid.S19
-rw-r--r--libc/arch-mips/syscalls/setfsuid.S19
-rw-r--r--libc/arch-mips64/syscalls/setfsgid.S25
-rw-r--r--libc/arch-mips64/syscalls/setfsuid.S25
-rw-r--r--libc/arch-x86/syscalls/setfsgid.S21
-rw-r--r--libc/arch-x86/syscalls/setfsuid.S21
-rw-r--r--libc/arch-x86_64/syscalls/setfsgid.S15
-rw-r--r--libc/arch-x86_64/syscalls/setfsuid.S15
-rw-r--r--libc/include/sys/fsuid.h3
14 files changed, 220 insertions, 2 deletions
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 014d554..128ec6b 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -303,6 +303,9 @@ int __ppoll:ppoll(pollfd*, unsigned int, timespec*, const sigset_t*, size_t) al
int __set_tid_address:set_tid_address(int*) all
+int setfsgid(gid_t) all
+int setfsuid(uid_t) all
+
pid_t wait4(pid_t, int*, int, struct rusage*) all
int __waitid:waitid(int, pid_t, struct siginfo_t*, int, void*) all
diff --git a/libc/arch-arm/syscalls/setfsgid.S b/libc/arch-arm/syscalls/setfsgid.S
new file mode 100644
index 0000000..e36e6ea
--- /dev/null
+++ b/libc/arch-arm/syscalls/setfsgid.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ mov ip, r7
+ ldr r7, =__NR_setfsgid
+ swi #0
+ mov r7, ip
+ cmn r0, #(MAX_ERRNO + 1)
+ bxls lr
+ neg r0, r0
+ b __set_errno
+END(setfsgid)
diff --git a/libc/arch-arm/syscalls/setfsuid.S b/libc/arch-arm/syscalls/setfsuid.S
new file mode 100644
index 0000000..e3c9c00
--- /dev/null
+++ b/libc/arch-arm/syscalls/setfsuid.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ mov ip, r7
+ ldr r7, =__NR_setfsuid
+ swi #0
+ mov r7, ip
+ cmn r0, #(MAX_ERRNO + 1)
+ bxls lr
+ neg r0, r0
+ b __set_errno
+END(setfsuid)
diff --git a/libc/arch-arm64/syscalls/setfsgid.S b/libc/arch-arm64/syscalls/setfsgid.S
new file mode 100644
index 0000000..d2f29ab
--- /dev/null
+++ b/libc/arch-arm64/syscalls/setfsgid.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ mov x8, __NR_setfsgid
+ svc #0
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setfsgid)
diff --git a/libc/arch-arm64/syscalls/setfsuid.S b/libc/arch-arm64/syscalls/setfsuid.S
new file mode 100644
index 0000000..852f97c
--- /dev/null
+++ b/libc/arch-arm64/syscalls/setfsuid.S
@@ -0,0 +1,14 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ mov x8, __NR_setfsuid
+ svc #0
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setfsuid)
diff --git a/libc/arch-mips/syscalls/setfsgid.S b/libc/arch-mips/syscalls/setfsgid.S
new file mode 100644
index 0000000..6a59565
--- /dev/null
+++ b/libc/arch-mips/syscalls/setfsgid.S
@@ -0,0 +1,19 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ .set noreorder
+ .cpload t9
+ li v0, __NR_setfsgid
+ syscall
+ bnez a3, 1f
+ move a0, v0
+ j ra
+ nop
+1:
+ la t9,__set_errno
+ j t9
+ nop
+ .set reorder
+END(setfsgid)
diff --git a/libc/arch-mips/syscalls/setfsuid.S b/libc/arch-mips/syscalls/setfsuid.S
new file mode 100644
index 0000000..1c2317a
--- /dev/null
+++ b/libc/arch-mips/syscalls/setfsuid.S
@@ -0,0 +1,19 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ .set noreorder
+ .cpload t9
+ li v0, __NR_setfsuid
+ syscall
+ bnez a3, 1f
+ move a0, v0
+ j ra
+ nop
+1:
+ la t9,__set_errno
+ j t9
+ nop
+ .set reorder
+END(setfsuid)
diff --git a/libc/arch-mips64/syscalls/setfsgid.S b/libc/arch-mips64/syscalls/setfsgid.S
new file mode 100644
index 0000000..7f75ed9
--- /dev/null
+++ b/libc/arch-mips64/syscalls/setfsgid.S
@@ -0,0 +1,25 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ .set push
+ .set noreorder
+ li v0, __NR_setfsgid
+ syscall
+ bnez a3, 1f
+ move a0, v0
+ j ra
+ nop
+1:
+ move t0, ra
+ bal 2f
+ nop
+2:
+ .cpsetup ra, t1, 2b
+ LA t9,__set_errno
+ .cpreturn
+ j t9
+ move ra, t0
+ .set pop
+END(setfsgid)
diff --git a/libc/arch-mips64/syscalls/setfsuid.S b/libc/arch-mips64/syscalls/setfsuid.S
new file mode 100644
index 0000000..4cab9d4
--- /dev/null
+++ b/libc/arch-mips64/syscalls/setfsuid.S
@@ -0,0 +1,25 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ .set push
+ .set noreorder
+ li v0, __NR_setfsuid
+ syscall
+ bnez a3, 1f
+ move a0, v0
+ j ra
+ nop
+1:
+ move t0, ra
+ bal 2f
+ nop
+2:
+ .cpsetup ra, t1, 2b
+ LA t9,__set_errno
+ .cpreturn
+ j t9
+ move ra, t0
+ .set pop
+END(setfsuid)
diff --git a/libc/arch-x86/syscalls/setfsgid.S b/libc/arch-x86/syscalls/setfsgid.S
new file mode 100644
index 0000000..fa7a5c5
--- /dev/null
+++ b/libc/arch-x86/syscalls/setfsgid.S
@@ -0,0 +1,21 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ pushl %ebx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ mov 8(%esp), %ebx
+ movl $__NR_setfsgid, %eax
+ int $0x80
+ cmpl $-MAX_ERRNO, %eax
+ jb 1f
+ negl %eax
+ pushl %eax
+ call __set_errno
+ addl $4, %esp
+1:
+ popl %ebx
+ ret
+END(setfsgid)
diff --git a/libc/arch-x86/syscalls/setfsuid.S b/libc/arch-x86/syscalls/setfsuid.S
new file mode 100644
index 0000000..5856a16
--- /dev/null
+++ b/libc/arch-x86/syscalls/setfsuid.S
@@ -0,0 +1,21 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ pushl %ebx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ mov 8(%esp), %ebx
+ movl $__NR_setfsuid, %eax
+ int $0x80
+ cmpl $-MAX_ERRNO, %eax
+ jb 1f
+ negl %eax
+ pushl %eax
+ call __set_errno
+ addl $4, %esp
+1:
+ popl %ebx
+ ret
+END(setfsuid)
diff --git a/libc/arch-x86_64/syscalls/setfsgid.S b/libc/arch-x86_64/syscalls/setfsgid.S
new file mode 100644
index 0000000..e9f50b8
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/setfsgid.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsgid)
+ movl $__NR_setfsgid, %eax
+ syscall
+ cmpq $-MAX_ERRNO, %rax
+ jb 1f
+ negl %eax
+ movl %eax, %edi
+ call __set_errno
+1:
+ ret
+END(setfsgid)
diff --git a/libc/arch-x86_64/syscalls/setfsuid.S b/libc/arch-x86_64/syscalls/setfsuid.S
new file mode 100644
index 0000000..cfdb86c
--- /dev/null
+++ b/libc/arch-x86_64/syscalls/setfsuid.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(setfsuid)
+ movl $__NR_setfsuid, %eax
+ syscall
+ cmpq $-MAX_ERRNO, %rax
+ jb 1f
+ negl %eax
+ movl %eax, %edi
+ call __set_errno
+1:
+ ret
+END(setfsuid)
diff --git a/libc/include/sys/fsuid.h b/libc/include/sys/fsuid.h
index bc47e3d..03355b7 100644
--- a/libc/include/sys/fsuid.h
+++ b/libc/include/sys/fsuid.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _SYS_FSUID_H_
#define _SYS_FSUID_H_
@@ -33,10 +34,8 @@
__BEGIN_DECLS
-#if 0 /* MISSING FROM BIONIC */
extern int setfsuid(uid_t);
extern int setfsgid(gid_t);
-#endif /* MISSING */
__END_DECLS