mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-25 09:39:25 +01:00
test-runner: fix segfault running with --log non-root
When running test-runner as non-root the environment variables SUDO_GID/SUDO_UID were unset, causing atoi to segfault. This replaces atoi with strtol, and checks the existance of SUDO_GID/SUDO_UID before trying to turn it into an integer. This patch also allows the uid/gid to be read from the user if running as non-root. Note: running as non-root does require the users permissions to be setup properly. Directories and files are created when running with logging, so if the user running test-runner does not have these permissions the creation of these files will fail.
This commit is contained in:
parent
935138500f
commit
689a1ed858
@ -3093,6 +3093,8 @@ int main(int argc, char *argv[])
|
|||||||
uint8_t actions = 0;
|
uint8_t actions = 0;
|
||||||
struct tm *timeinfo;
|
struct tm *timeinfo;
|
||||||
time_t t;
|
time_t t;
|
||||||
|
char *gid;
|
||||||
|
char *uid;
|
||||||
|
|
||||||
l_log_set_stderr();
|
l_log_set_stderr();
|
||||||
|
|
||||||
@ -3193,8 +3195,16 @@ int main(int argc, char *argv[])
|
|||||||
time(&t);
|
time(&t);
|
||||||
timeinfo = localtime(&t);
|
timeinfo = localtime(&t);
|
||||||
|
|
||||||
log_gid = atoi(getenv("SUDO_GID"));
|
gid = getenv("SUDO_GID");
|
||||||
log_uid = atoi(getenv("SUDO_UID"));
|
uid = getenv("SUDO_UID");
|
||||||
|
|
||||||
|
if (!gid || !uid) {
|
||||||
|
log_gid = getgid();
|
||||||
|
log_uid = getuid();
|
||||||
|
} else {
|
||||||
|
log_gid = strtol(gid, NULL, 10);
|
||||||
|
log_uid = strtol(uid, NULL, 10);
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(log_dir, sizeof(log_dir), "%s/run-%d-%d-%d-%d",
|
snprintf(log_dir, sizeof(log_dir), "%s/run-%d-%d-%d-%d",
|
||||||
optarg, timeinfo->tm_year + 1900,
|
optarg, timeinfo->tm_year + 1900,
|
||||||
|
Loading…
Reference in New Issue
Block a user