blob: 7fdca73f1caf409fa1aa4c5f71e38de9818ea3e8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/*
* https://bugs.gentoo.org/599706
*
*/
#include "headers.h"
int main(int argc, char *argv[])
{
if (argc < 3)
return -2;
uid_t uid = atoi(argv[1]);
gid_t gid = atoi(argv[2]);
/* The sandbox catches this:
*
* int fd = open(argv[3], O_RDWR);
*
* And it /should/ catch this:
*
* int fd = open(argv[3], O_RDONLY);
*
* ...but the latter only works when /proc/self/fd/%i
* is available.
*/
#ifdef SANDBOX_PROC_SELF_FD
int fd = open(argv[3], O_RDONLY);
#else
int fd = open(argv[3], O_RDWR);
#endif
int fchown_result = fchown(fd, uid, gid);
close(fd);
return fchown_result;
}
|