aboutsummaryrefslogtreecommitdiffstats
path: root/ports/uids_generic/guts/setuid.c
blob: 831f8ffa34953bc6ef8162447aadddb54662d4f9 (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
/* 
 * Copyright (c) 2008-2010 Wind River Systems; see
 * guts/COPYRIGHT for information.
 *
 * SPDX-License-Identifier: LGPL-2.1-only
 *
 * static int
 * wrap_setuid(uid_t uid) {
 *	int rc = -1;
 */
	if (pseudo_euid == 0) {
		pseudo_ruid = uid;
		pseudo_euid = uid;
		pseudo_suid = uid;
		pseudo_fuid = uid;
		pseudo_client_touchuid();
		rc = 0;
	} else if (pseudo_euid == uid || pseudo_suid == uid || pseudo_ruid == uid) {
		pseudo_euid = uid;
		pseudo_fuid = uid;
		pseudo_client_touchuid();
		rc = 0;
	} else {
		rc = -1;
		errno = EPERM;
	}
/*	return rc;
 * }
 */