Pagers are not expected to have setuid or setgid bits, but assuming such
mistake has taken place try to avoid privilege escalation.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
}
va_end(argp);
+ if (geteuid() != getuid() || getegid() != getgid()) {
+ if (setuid(getuid()) < 0)
+ err(EXIT_FAILURE, _("setuid failed"));
+ if (setgid(getgid()) < 0)
+ err(EXIT_FAILURE, _("setgid failed"));
+ }
+
execvp(cmd, args);
errsv = errno;
fputs(_("exec failed\n"), stderr);