aboutsummaryrefslogtreecommitdiff
path: root/tests/nixos/setuid/fchmodat2-suid.c
blob: 7280331d52f3044eabf6d2c1db1d58df50e0fdb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <errno.h>
#include <unistd.h>
#include <assert.h>

int main(void) {
    char *name = getenv("out");
    FILE *fd = fopen(name, "w");
    fprintf(fd, "henlo :3");
    fclose(fd);

    long rs = syscall(SYS_fchmodat2, NULL, name, S_ISUID, 0);
    assert(rs == -1);
    assert(errno == EPERM);
}