blob: 2a26405243eb0ca1e8e66daa75eb3fff4214f410 (
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
35
36
37
|
/*
* Copyright (c) 2008-2010 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_setresgid(gid_t rgid, gid_t egid, gid_t sgid) {
* int rc = -1;
*/
rc = 0;
if (pseudo_euid != 0 && rgid != (gid_t) -1 &&
rgid != pseudo_egid && rgid != pseudo_rgid && rgid != pseudo_sgid) {
rc = -1;
errno = EPERM;
}
if (pseudo_euid != 0 && egid != (gid_t) -1 &&
egid != pseudo_egid && egid != pseudo_rgid && egid != pseudo_sgid) {
rc = -1;
errno = EPERM;
}
if (pseudo_euid != 0 && sgid != (gid_t) -1 &&
sgid != pseudo_egid && sgid != pseudo_rgid && sgid != pseudo_sgid) {
rc = -1;
errno = EPERM;
}
if (rc != -1) {
if (rgid != (gid_t) -1)
pseudo_rgid = rgid;
if (egid != (gid_t) -1)
pseudo_egid = egid;
if (sgid != (gid_t) -1)
pseudo_sgid = sgid;
pseudo_fgid = pseudo_egid;
pseudo_client_touchuid();
}
/* return rc;
* }
*/
|