Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */
2 : :
3 : : #include <fcntl.h>
4 : : #include <stdlib.h>
5 : : #include <sys/stat.h>
6 : : #include <unistd.h>
7 : :
8 : : #include "acl-util.h"
9 : : #include "fd-util.h"
10 : : #include "string-util.h"
11 : : #include "tmpfile-util.h"
12 : : #include "user-util.h"
13 : :
14 : 4 : static void test_add_acls_for_user(void) {
15 : 4 : char fn[] = "/tmp/test-empty.XXXXXX";
16 : 4 : _cleanup_close_ int fd = -1;
17 : : char *cmd;
18 : : uid_t uid;
19 : : int r;
20 : :
21 : 4 : fd = mkostemp_safe(fn);
22 [ - + ]: 4 : assert_se(fd >= 0);
23 : :
24 : : /* Use the mode that user journal files use */
25 [ - + ]: 4 : assert_se(fchmod(fd, 0640) == 0);
26 : :
27 [ + + + - : 20 : cmd = strjoina("ls -l ", fn);
- + - + +
+ + - ]
28 [ - + ]: 4 : assert_se(system(cmd) == 0);
29 : :
30 [ + + + - : 20 : cmd = strjoina("getfacl -p ", fn);
- + - + +
+ + - ]
31 [ - + ]: 4 : assert_se(system(cmd) == 0);
32 : :
33 [ - + ]: 4 : if (getuid() == 0) {
34 : 0 : const char *nobody = NOBODY_USER_NAME;
35 : 0 : r = get_user_creds(&nobody, &uid, NULL, NULL, NULL, 0);
36 [ # # ]: 0 : if (r < 0)
37 : 0 : uid = 0;
38 : : } else
39 : 4 : uid = getuid();
40 : :
41 : 4 : r = add_acls_for_user(fd, uid);
42 [ - + ]: 4 : assert_se(r >= 0);
43 : :
44 [ + + + - : 20 : cmd = strjoina("ls -l ", fn);
- + - + +
+ + - ]
45 [ - + ]: 4 : assert_se(system(cmd) == 0);
46 : :
47 [ + + + - : 20 : cmd = strjoina("getfacl -p ", fn);
- + - + +
+ + - ]
48 [ - + ]: 4 : assert_se(system(cmd) == 0);
49 : :
50 : : /* set the acls again */
51 : :
52 : 4 : r = add_acls_for_user(fd, uid);
53 [ - + ]: 4 : assert_se(r >= 0);
54 : :
55 [ + + + - : 20 : cmd = strjoina("ls -l ", fn);
- + - + +
+ + - ]
56 [ - + ]: 4 : assert_se(system(cmd) == 0);
57 : :
58 [ + + + - : 20 : cmd = strjoina("getfacl -p ", fn);
- + - + +
+ + - ]
59 [ - + ]: 4 : assert_se(system(cmd) == 0);
60 : :
61 : 4 : unlink(fn);
62 : 4 : }
63 : :
64 : 4 : int main(int argc, char **argv) {
65 : 4 : test_add_acls_for_user();
66 : :
67 : 4 : return 0;
68 : : }
|