summaryrefslogtreecommitdiffstats
path: root/usr.sbin/lpr/lpd
diff options
context:
space:
mode:
authorgad <gad@FreeBSD.org>2001-06-15 22:03:07 +0000
committergad <gad@FreeBSD.org>2001-06-15 22:03:07 +0000
commite402d6c9159ae45f5056765c53cebfe6c25ee35e (patch)
tree34bd9934cba11944407fb52a6d7f9c516d667752 /usr.sbin/lpr/lpd
parent134649df9dfcfa24c39e28dcbf0b24db1b8f9605 (diff)
downloadFreeBSD-src-e402d6c9159ae45f5056765c53cebfe6c25ee35e.zip
FreeBSD-src-e402d6c9159ae45f5056765c53cebfe6c25ee35e.tar.gz
Rename a few global variables which hold hostname-related values to be
more sensible/understandable. 'from'->'from_host' 'host'->'local_host' 'fromb'->'frombuf' 'fromhost'->'origin_host' and a local-variable named 'host'->'hostbuf'. This fixes some compile-time warnings about local variables shadowing global variables. Other than renaming variables, the only actual code changes are to call strlcpy() instead of strncpy() when setting those (renamed) variables, and that 'from_ip' is now a strdup()-created buffer instead of being a static buffer compiled in as 1025 bytes. Reviewed by: freebsd-print@bostonradio.org (an earlier version) MFC after: 1 week
Diffstat (limited to 'usr.sbin/lpr/lpd')
-rw-r--r--usr.sbin/lpr/lpd/extern.h1
-rw-r--r--usr.sbin/lpr/lpd/lpd.c39
-rw-r--r--usr.sbin/lpr/lpd/printjob.c21
-rw-r--r--usr.sbin/lpr/lpd/recvjob.c7
4 files changed, 33 insertions, 35 deletions
diff --git a/usr.sbin/lpr/lpd/extern.h b/usr.sbin/lpr/lpd/extern.h
index dc9b109..497594e 100644
--- a/usr.sbin/lpr/lpd/extern.h
+++ b/usr.sbin/lpr/lpd/extern.h
@@ -37,7 +37,6 @@
#include <sys/cdefs.h>
extern char scnkey[][HEIGHT]; /* in lpdchar.c */
-extern char fromb[];
extern int lflag; /* in lpd.c */
struct printer;
diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c
index d7de749..ed912c9 100644
--- a/usr.sbin/lpr/lpd/lpd.c
+++ b/usr.sbin/lpr/lpd/lpd.c
@@ -138,7 +138,7 @@ main(int argc, char **argv)
euid = geteuid(); /* these shouldn't be different */
uid = getuid();
socket_debug = 0;
- gethostname(host, sizeof(host));
+ gethostname(local_host, sizeof(local_host));
progname = "lpd";
@@ -413,7 +413,8 @@ int requ[MAXREQUESTS]; /* job number of spool entries */
int requests; /* # of spool requests */
char *person; /* name of person doing lprm */
-char fromb[MAXHOSTNAMELEN]; /* buffer for client's machine name */
+ /* buffer to hold the client's machine-name */
+static char frombuf[MAXHOSTNAMELEN];
char cbuf[BUFSIZ]; /* command line buffer */
const char *cmdnames[] = {
"null",
@@ -450,10 +451,10 @@ doit(void)
if (lflag) {
if (*cp >= '\1' && *cp <= '\5')
syslog(LOG_INFO, "%s requests %s %s",
- from, cmdnames[(u_char)*cp], cp+1);
+ from_host, cmdnames[(u_char)*cp], cp+1);
else
syslog(LOG_INFO, "bad request (%d) from %s",
- *cp, from);
+ *cp, from_host);
}
switch (*cp++) {
case CMD_CHECK_QUE: /* check the queue, print any jobs there */
@@ -611,7 +612,7 @@ chkhost(struct sockaddr *f)
register FILE *hostf;
int first = 1;
int good = 0;
- char host[NI_MAXHOST], ip[NI_MAXHOST];
+ char hostbuf[NI_MAXHOST], ip[NI_MAXHOST];
char serv[NI_MAXSERV];
int error, addrlen;
caddr_t addr;
@@ -622,45 +623,43 @@ chkhost(struct sockaddr *f)
fatal(0, "Malformed from address");
/* Need real hostname for temporary filenames */
- error = getnameinfo(f, f->sa_len, host, sizeof(host), NULL, 0,
- NI_NAMEREQD);
+ error = getnameinfo(f, f->sa_len, hostbuf, sizeof(hostbuf), NULL, 0,
+ NI_NAMEREQD);
if (error) {
- error = getnameinfo(f, f->sa_len, host, sizeof(host), NULL, 0,
- NI_NUMERICHOST | NI_WITHSCOPEID);
+ error = getnameinfo(f, f->sa_len, hostbuf, sizeof(hostbuf),
+ NULL, 0, NI_NUMERICHOST | NI_WITHSCOPEID);
if (error)
fatal(0, "Host name for your address unknown");
else
fatal(0, "Host name for your address (%s) unknown",
- host);
+ hostbuf);
}
- (void)strncpy(fromb, host, sizeof(fromb) - 1);
- fromb[sizeof(fromb) - 1] = '\0';
- from = fromb;
+ strlcpy(frombuf, hostbuf, sizeof(frombuf));
+ from_host = frombuf;
/* Need address in stringform for comparison (no DNS lookup here) */
- error = getnameinfo(f, f->sa_len, host, sizeof(host), NULL, 0,
- NI_NUMERICHOST | NI_WITHSCOPEID);
+ error = getnameinfo(f, f->sa_len, hostbuf, sizeof(hostbuf), NULL, 0,
+ NI_NUMERICHOST | NI_WITHSCOPEID);
if (error)
fatal(0, "Cannot print address");
- strncpy(from_ip, host, NI_MAXHOST);
- from_ip[sizeof(from_ip) - 1] = '\0';
+ from_ip = strdup(hostbuf);
/* Reject numeric addresses */
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
- if (getaddrinfo(fromb, NULL, &hints, &res) == 0) {
+ if (getaddrinfo(from_host, NULL, &hints, &res) == 0) {
freeaddrinfo(res);
- fatal(0, "reverse lookup results in non-FQDN %s", fromb);
+ fatal(0, "reverse lookup results in non-FQDN %s", from_host);
}
/* Check for spoof, ala rlogind */
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
- error = getaddrinfo(fromb, NULL, &hints, &res);
+ error = getaddrinfo(from_host, NULL, &hints, &res);
if (error) {
fatal(0, "hostname for your address (%s) unknown: %s", from_ip,
gai_strerror(error));
diff --git a/usr.sbin/lpr/lpd/printjob.c b/usr.sbin/lpr/lpd/printjob.c
index 14dc49c..b46d278 100644
--- a/usr.sbin/lpr/lpd/printjob.c
+++ b/usr.sbin/lpr/lpd/printjob.c
@@ -107,7 +107,7 @@ static char title[80]; /* ``pr'' title */
static char locale[80]; /* ``pr'' locale */
static char class[32]; /* classification field */
-static char fromhost[MAXHOSTNAMELEN]; /* user's host machine */
+static char origin_host[MAXHOSTNAMELEN]; /* user's host machine */
/* indentation size in static characters */
static char indent[10] = "-i0";
static char jobname[100]; /* job or file name */
@@ -417,8 +417,7 @@ printit(struct printer *pp, char *file)
while (getline(cfp))
switch (line[0]) {
case 'H':
- strncpy(fromhost, line+1, sizeof(fromhost) - 1);
- fromhost[sizeof(fromhost) - 1] = '\0';
+ strlcpy(origin_host, line + 1, sizeof(origin_host));
if (class[0] == '\0') {
strncpy(class, line+1, sizeof(class) - 1);
class[sizeof(class) - 1] = '\0';
@@ -747,7 +746,7 @@ print(struct printer *pp, int format, char *file)
av[n++] = "-n";
av[n++] = logname;
av[n++] = "-h";
- av[n++] = fromhost;
+ av[n++] = origin_host;
av[n++] = pp->acct_file;
av[n] = 0;
fo = pfd;
@@ -874,8 +873,7 @@ sendit(struct printer *pp, char *file)
i = i * 10 + (*cp++ - '0');
fino = i;
} else if (line[0] == 'H') {
- strncpy(fromhost, line+1, sizeof(fromhost) - 1);
- fromhost[sizeof(fromhost) - 1] = '\0';
+ strlcpy(origin_host, line + 1, sizeof(origin_host));
if (class[0] == '\0') {
strncpy(class, line+1, sizeof(class) - 1);
class[sizeof(class) - 1] = '\0';
@@ -1005,7 +1003,7 @@ sendfile(struct printer *pp, int type, char *file, char format)
av[++n] = "-n";
av[++n] = logname;
av[++n] = "-h";
- av[++n] = fromhost;
+ av[++n] = origin_host;
av[++n] = pp->acct_file;
av[++n] = 0;
if ((ifilter = dofork(pp, DORETURN)) == 0) { /* child */
@@ -1166,7 +1164,7 @@ sendfile(struct printer *pp, int type, char *file, char format)
openpr(pp);
if (type == '\3')
trstat_write(pp, TR_SENDING, stb.st_size, logname,
- pp->remote_host, fromhost);
+ pp->remote_host, origin_host);
return(OK);
}
@@ -1321,10 +1319,10 @@ sendmail(struct printer *pp, char *user, int bombed)
_exit(0);
} else if (s > 0) { /* parent */
dup2(p[1], 1);
- printf("To: %s@%s\n", user, fromhost);
+ printf("To: %s@%s\n", user, origin_host);
printf("Subject: %s printer job \"%s\"\n", pp->printer,
*jobname ? jobname : "<unknown>");
- printf("Reply-To: root@%s\n\n", host);
+ printf("Reply-To: root@%s\n\n", local_host);
printf("Your printer job ");
if (*jobname)
printf("(%s) ", jobname);
@@ -1341,7 +1339,8 @@ sendmail(struct printer *pp, char *user, int bombed)
cp = "FATALERR";
break;
case NOACCT:
- printf("\ncould not be printed without an account on %s\n", host);
+ printf("\ncould not be printed without an account on %s\n",
+ local_host);
cp = "NOACCT";
break;
case FILTERERR:
diff --git a/usr.sbin/lpr/lpd/recvjob.c b/usr.sbin/lpr/lpd/recvjob.c
index 661ad05..99e38de 100644
--- a/usr.sbin/lpr/lpd/recvjob.c
+++ b/usr.sbin/lpr/lpd/recvjob.c
@@ -186,7 +186,8 @@ readjob(struct printer *pp)
* something different than what gethostbyaddr()
* returns
*/
- strncpy(cp + 6, from, sizeof(line) + line - cp - 7);
+ strncpy(cp + 6, from_host, sizeof(line) + line - cp
+ - 7);
line[sizeof(line) - 1 ] = '\0';
strncpy(tfname, cp, sizeof(tfname) - 1);
tfname[sizeof (tfname) - 1] = '\0';
@@ -231,7 +232,7 @@ readjob(struct printer *pp)
dfcnt++;
trstat_init(pp, dfname, dfcnt);
(void) readfile(pp, dfname, size);
- trstat_write(pp, TR_RECVING, size, givenid, from,
+ trstat_write(pp, TR_RECVING, size, givenid, from_host,
givenhost);
continue;
}
@@ -386,7 +387,7 @@ frecverr(msg, va_alist)
#else
va_start(ap);
#endif
- syslog(LOG_ERR, "Error receiving job from %s:", fromb);
+ syslog(LOG_ERR, "Error receiving job from %s:", from_host);
vsyslog(LOG_ERR, msg, ap);
va_end(ap);
/*
OpenPOWER on IntegriCloud