From b0f666a71ef321b5fadf80539aa1e27d0e7d1366 Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Sun, 18 Aug 1996 19:07:27 +0000 Subject: if setuid, no env variables --- src/lib/libc/net/res_init.c | 5 +++-- src/lib/libc/net/res_query.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libc/net/res_init.c b/src/lib/libc/net/res_init.c index ff8e1b1e5e..2a1f454250 100644 --- a/src/lib/libc/net/res_init.c +++ b/src/lib/libc/net/res_init.c @@ -121,6 +121,7 @@ res_init() int nsort = 0; int dots; u_long mask; + int notsuid = (getuid() == geteuid()); _res.nsaddr.sin_len = sizeof(struct sockaddr_in); _res.nsaddr.sin_family = AF_INET; @@ -136,7 +137,7 @@ res_init() strncpy(_res.lookups, "f", sizeof _res.lookups); /* Allow user to override the local domain definition */ - if ((cp = getenv("LOCALDOMAIN")) != NULL) { + if (notsuid && (cp = getenv("LOCALDOMAIN")) != NULL) { (void)strncpy(_res.defdname, cp, sizeof(_res.defdname) - 1); if ((cp = strpbrk(_res.defdname, " \t\n")) != NULL) *cp = '\0'; @@ -340,7 +341,7 @@ res_init() #endif } - if ((cp = getenv("RES_OPTIONS")) != NULL) + if (notsuid && (cp = getenv("RES_OPTIONS")) != NULL) res_setoptions(cp, "env"); _res.options |= RES_INIT; return (0); diff --git a/src/lib/libc/net/res_query.c b/src/lib/libc/net/res_query.c index 81c4d3194d..61b6cb35c9 100644 --- a/src/lib/libc/net/res_query.c +++ b/src/lib/libc/net/res_query.c @@ -368,6 +368,8 @@ __hostalias(name) if (_res.options & RES_NOALIASES) return (NULL); + if (getuid() != setuid()) + return (NULL); file = getenv("HOSTALIASES"); if (file == NULL || (fp = fopen(file, "r")) == NULL) return (NULL); -- cgit v1.2.3-55-g6feb