fix rlogin shell bug; bug report 4.3BSD/etc/33
fix long/int problems from 2.10BSD
SCCS-vsn: usr.sbin/inetd/inetd.c 5.9
#endif not lint
#ifndef lint
#endif not lint
#ifndef lint
-static char sccsid[] = "@(#)inetd.c 5.8 (Berkeley) %G%";
+static char sccsid[] = "@(#)inetd.c 5.9 (Berkeley) %G%";
#endif
openlog("inetd", LOG_PID | LOG_NOWAIT, LOG_DAEMON);
bzero((char *)&sv, sizeof(sv));
#endif
openlog("inetd", LOG_PID | LOG_NOWAIT, LOG_DAEMON);
bzero((char *)&sv, sizeof(sv));
if (nsock == 0) {
(void) sigblock(SIGBLOCK);
while (nsock == 0)
if (nsock == 0) {
(void) sigblock(SIGBLOCK);
while (nsock == 0)
- sigpause(0);
- (void) sigsetmask(0);
+ sigpause(0L);
+ (void) sigsetmask(0L);
}
readable = allsock;
if ((n = select(maxsock + 1, &readable, (fd_set *)0,
}
readable = allsock;
if ((n = select(maxsock + 1, &readable, (fd_set *)0,
sep->se_fd = -1;
sep->se_count = 0;
nsock--;
sep->se_fd = -1;
sep->se_count = 0;
nsock--;
if (!timingout) {
timingout = 1;
alarm(RETRYTIME);
if (!timingout) {
timingout = 1;
alarm(RETRYTIME);
if (pid < 0) {
if (!sep->se_wait && sep->se_socktype == SOCK_STREAM)
close(ctrl);
if (pid < 0) {
if (!sep->se_wait && sep->se_socktype == SOCK_STREAM)
close(ctrl);
FD_CLR(sep->se_fd, &allsock);
nsock--;
}
FD_CLR(sep->se_fd, &allsock);
nsock--;
}
if (pid == 0) {
#ifdef DEBUG
int tt;
if (pid == 0) {
#ifdef DEBUG
int tt;
{
register struct servtab *sep, *cp, **sepp;
struct servtab *getconfigent(), *enter();
{
register struct servtab *sep, *cp, **sepp;
struct servtab *getconfigent(), *enter();
if (!setconfig()) {
syslog(LOG_ERR, "%s: %m", CONFIG);
if (!setconfig()) {
syslog(LOG_ERR, "%s: %m", CONFIG);
struct servtab *cp;
{
register struct servtab *sep;
struct servtab *cp;
{
register struct servtab *sep;
char *strdup();
sep = (struct servtab *)malloc(sizeof (*sep));
char *strdup();
sep = (struct servtab *)malloc(sizeof (*sep));
int s;
struct servtab *sep;
{
int s;
struct servtab *sep;
{
+ register char *rs;
+ int len;
- register int i;
- register char *rp, *rs, *dp;
setproctitle(sep->se_service, s);
setproctitle(sep->se_service, s);
- for (rs = ring; ; ++rs) {
- if (rs >= endring)
- rs = ring;
- rp = rs;
- dp = text;
- i = MIN(LINESIZ, endring - rp);
- bcopy(rp, dp, i);
- dp += i;
- if ((rp += i) >= endring)
- rp = ring;
- if (i < LINESIZ) {
- i = LINESIZ - i;
- bcopy(rp, dp, i);
- dp += i;
- if ((rp += i) >= endring)
- rp = ring;
+ text[LINESIZ] = '\r';
+ text[LINESIZ + 1] = '\n';
+ for (rs = ring;;) {
+ if ((len = endring - rs) >= LINESIZ)
+ bcopy(rs, text, LINESIZ);
+ else {
+ bcopy(rs, text, len);
+ bcopy(ring, text + len, LINESIZ - len);
- *dp++ = '\r';
- *dp++ = '\n';
-
- if (write(s, text, dp - text) != dp - text)
+ if (++rs == endring)
+ rs = ring;
+ if (write(s, text, sizeof(text)) != sizeof(text))
int s;
struct servtab *sep;
{
int s;
struct servtab *sep;
{
- char text[LINESIZ+2];
- register int i;
- register char *rp;
- static char *rs = ring;
+ static char *rs;
+ int len, size;
+ char text[LINESIZ+2];
size = sizeof(sa);
if (recvfrom(s, text, sizeof(text), 0, &sa, &size) < 0)
return;
size = sizeof(sa);
if (recvfrom(s, text, sizeof(text), 0, &sa, &size) < 0)
return;
- rp = rs;
- if (rs++ >= endring)
- rs = ring;
- i = MIN(LINESIZ - 2, endring - rp);
- bcopy(rp, text, i);
- if ((rp += i) >= endring)
- rp = ring;
- if (i < LINESIZ - 2) {
- bcopy(rp, text, i);
- if ((rp += i) >= endring)
- rp = ring;
- }
- text[LINESIZ - 2] = '\r';
- text[LINESIZ - 1] = '\n';
+ if ((len = endring - rs) >= LINESIZ)
+ bcopy(rs, text, LINESIZ);
+ else {
+ bcopy(rs, text, len);
+ bcopy(ring, text + len, LINESIZ - len);
+ }
+ if (++rs == endring)
+ rs = ring;
+ text[LINESIZ] = '\r';
+ text[LINESIZ + 1] = '\n';
(void) sendto(s, text, sizeof(text), 0, &sa, sizeof(sa));
}
(void) sendto(s, text, sizeof(text), 0, &sa, sizeof(sa));
}
clock = time((time_t *) 0);
clock = time((time_t *) 0);
- sprintf(buffer, "%s\r", ctime(&clock));
+ sprintf(buffer, "%.24s\r\n", ctime(&clock));
(void) write(s, buffer, strlen(buffer));
}
(void) write(s, buffer, strlen(buffer));
}
size = sizeof(sa);
if (recvfrom(s, buffer, sizeof(buffer), 0, &sa, &size) < 0)
return;
size = sizeof(sa);
if (recvfrom(s, buffer, sizeof(buffer), 0, &sa, &size) < 0)
return;
- sprintf(buffer, "%s\r", ctime(&clock));
+ sprintf(buffer, "%.24s\r\n", ctime(&clock));
(void) sendto(s, buffer, strlen(buffer), 0, &sa, sizeof(sa));
}
(void) sendto(s, buffer, strlen(buffer), 0, &sa, sizeof(sa));
}