41 lines
1.5 KiB
C
41 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright (c) 2021 Linux Test Project
|
|
*/
|
|
|
|
#ifndef TST_UID_H_
|
|
#define TST_UID_H_
|
|
|
|
#include <sys/types.h>
|
|
|
|
/*
|
|
* Find unassigned gid. The skip argument can be used to ignore e.g. the main
|
|
* group of a specific user in case it's not listed in the group file. If you
|
|
* do not need to skip any specific gid, simply set it to 0.
|
|
*/
|
|
gid_t tst_get_free_gid_(const char *file, const int lineno, gid_t skip);
|
|
#define tst_get_free_gid(skip) tst_get_free_gid_(__FILE__, __LINE__, (skip))
|
|
|
|
/*
|
|
* Get a specific number of unique existing non-root user or group IDs.
|
|
* The "start" parameter is the number of buffer entries that are already
|
|
* filled and will not be modified. The function will fill the remaining
|
|
* (size-start) entries with unique UID/GID values.
|
|
*/
|
|
void tst_get_uids(uid_t *buf, unsigned int start, unsigned int size);
|
|
void tst_get_gids(gid_t *buf, unsigned int start, unsigned int size);
|
|
|
|
/*
|
|
* Helper functions for checking current proces UIDs/GIDs.
|
|
*/
|
|
int tst_check_resuid_(const char *file, const int lineno, const char *callstr,
|
|
uid_t exp_ruid, uid_t exp_euid, uid_t exp_suid);
|
|
#define tst_check_resuid(cstr, ruid, euid, suid) \
|
|
tst_check_resuid_(__FILE__, __LINE__, (cstr), (ruid), (euid), (suid))
|
|
|
|
int tst_check_resgid_(const char *file, const int lineno, const char *callstr,
|
|
gid_t exp_rgid, gid_t exp_egid, gid_t exp_sgid);
|
|
#define tst_check_resgid(cstr, rgid, egid, sgid) \
|
|
tst_check_resgid_(__FILE__, __LINE__, (cstr), (rgid), (egid), (sgid))
|
|
|
|
#endif /* TST_UID_H_ */
|