summaryrefslogtreecommitdiffstats
path: root/usr.sbin/lpr/lpc/lpc.c
diff options
context:
space:
mode:
authorgad <gad@FreeBSD.org>2002-06-15 22:51:58 +0000
committergad <gad@FreeBSD.org>2002-06-15 22:51:58 +0000
commit6bfe5682488b02e59b3b1254657a7bc8b9bb209b (patch)
tree44f771aaa14debc6dffa2c3c508f7bf1c7c5f7a5 /usr.sbin/lpr/lpc/lpc.c
parent62289e8461aa01c16367d44b6e2f109737065bfa (diff)
downloadFreeBSD-src-6bfe5682488b02e59b3b1254657a7bc8b9bb209b.zip
FreeBSD-src-6bfe5682488b02e59b3b1254657a7bc8b9bb209b.tar.gz
Add a new command to 'lpc' called 'setstatus', which would be used to
change the status message of a print queue. This includes some minor changes to the upstat() routine, so that error messages are not printed while seteuid(priv-user). Reviewed by: freebsd-audit and freebsd-print@bostonradio.org MFC after: 10 days
Diffstat (limited to 'usr.sbin/lpr/lpc/lpc.c')
-rw-r--r--usr.sbin/lpr/lpc/lpc.c12
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);
}
OpenPOWER on IntegriCloud