From 15aaa7114861f523a930e03e818efa68b9170ec2 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 24 Apr 2015 17:34:58 +0000 Subject: Do not attempt to use ~/.magic if running as root (or issetugid()). --- usr.bin/file/file.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'usr.bin/file/file.c') diff --git a/usr.bin/file/file.c b/usr.bin/file/file.c index eaf2072f7ad..02f5f24296d 100644 --- a/usr.bin/file/file.c +++ b/usr.bin/file/file.c @@ -1,4 +1,4 @@ -/* $OpenBSD: file.c,v 1.31 2015/04/24 17:10:50 nicm Exp $ */ +/* $OpenBSD: file.c,v 1.32 2015/04/24 17:34:57 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott @@ -137,23 +137,25 @@ main(int argc, char **argv) } else if (argc == 0) usage(); - home = getenv("HOME"); - if (home == NULL || *home == '\0') { - pw = getpwuid(getuid()); - if (pw != NULL) - home = pw->pw_dir; - else - home = NULL; + f = NULL; + if (geteuid() != 0 && !issetugid()) { + home = getenv("HOME"); + if (home == NULL || *home == '\0') { + pw = getpwuid(getuid()); + if (pw != NULL) + home = pw->pw_dir; + else + home = NULL; + } + if (home != NULL) { + xasprintf(&path, "%s/.magic", home); + f = fopen(path, "r"); + if (f == NULL && errno != ENOENT) + err(1, "%s", path); + if (f == NULL) + free(path); + } } - if (home != NULL) { - xasprintf(&path, "%s/.magic", home); - f = fopen(path, "r"); - if (f == NULL && errno != ENOENT) - err(1, "%s", path); - if (f == NULL) - free(path); - } else - f = NULL; if (f == NULL) { path = xstrdup("/etc/magic"); f = fopen(path, "r"); -- cgit v1.2.3