-.\" $OpenBSD: file.1,v 1.36 2015/04/24 16:24:11 nicm Exp $
+.\" $OpenBSD: file.1,v 1.37 2015/04/24 17:34:57 nicm Exp $
.\" $FreeBSD: src/usr.bin/file/file.1,v 1.16 2000/03/01 12:19:39 sheldonh Exp $
.\"
.\" Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
.Pa /etc/magic
file (or
.Pa ~/.magic
-instead if it exists).
+instead if it exists and
+.Nm
+is not running as root).
The file format is described in
.Xr magic 5 .
.It
-/* $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 <nicm@openbsd.org>
} 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");