diff options
Diffstat (limited to 'usr.sbin/lpr/lpc/lpc.c')
-rw-r--r-- | usr.sbin/lpr/lpc/lpc.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.sbin/lpr/lpc/lpc.c b/usr.sbin/lpr/lpc/lpc.c index 457ad70..357e4ad 100644 --- a/usr.sbin/lpr/lpc/lpc.c +++ b/usr.sbin/lpr/lpc/lpc.c @@ -110,12 +110,14 @@ main(int argc, char *argv[]) printf("?Invalid command\n"); exit(1); } - if (c->c_priv && getuid() && ingroup(LPR_OPER) == 0) { + if ((c->c_opts & LPC_PRIVCMD) && getuid() && + ingroup(LPR_OPER) == 0) { printf("?Privileged command\n"); exit(1); } if (c->c_generic != 0) - generic(c->c_generic, c->c_handler, argc, argv); + generic(c->c_generic, c->c_opts, c->c_handler, + argc, argv); else (*c->c_handler)(argc, argv); exit(0); @@ -210,7 +212,8 @@ cmdscanner(void) printf("?Invalid command\n"); continue; } - if (c->c_priv && getuid() && ingroup(LPR_OPER) == 0) { + if ((c->c_opts & LPC_PRIVCMD) && getuid() && + ingroup(LPR_OPER) == 0) { printf("?Privileged command\n"); continue; } @@ -223,7 +226,8 @@ cmdscanner(void) * initial parameter processing. */ if (c->c_generic != 0) - generic(c->c_generic, c->c_handler, margc, margv); + generic(c->c_generic, c->c_opts, c->c_handler, + margc, margv); else (*c->c_handler)(margc, margv); } |