Port 37 (RFC 738) style times are supposed to be a 32 bit time since

1900 in network byte order. Use a uint32_t to calculate and send
the time, so that we don't need to know how big ints or longs are.

I used uint32_t instead of int in the patch, on the off chance
someone uses our inetd source on a system that doesnt 32 bit ints.

PR:		95290
Submitted by:	Bruce Becker <hostmaster@whois.gts.net>
MFC after:	2 weeks
This commit is contained in:
David Malone 2006-04-17 18:35:58 +00:00
parent 0f180a7cce
commit e90fa6a937
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=157816
2 changed files with 7 additions and 7 deletions

View File

@ -7,7 +7,7 @@ MLINKS= inetd.8 inetd.conf.5
SRCS= inetd.c builtins.c
WARNS?= 2
CFLAGS+= -DLOGIN_CAP
CFLAGS+= -DLOGIN_CAP -fno-builtin
#CFLAGS+= -DSANITY_CHECK
DPADD= ${LIBUTIL} ${LIBWRAP}

View File

@ -64,7 +64,7 @@ static int getline(int, char *, int);
void iderror(int, int, int, const char *);
void ident_stream(int, struct servtab *);
void initring(void);
unsigned long machtime(void);
uint32_t machtime(void);
void machtime_dg(int, struct servtab *);
void machtime_stream(int, struct servtab *);
@ -685,7 +685,7 @@ ident_stream(int s, struct servtab *sep)
* some seventy years Bell Labs was asleep.
*/
unsigned long
uint32_t
machtime(void)
{
struct timeval tv;
@ -695,8 +695,8 @@ machtime(void)
warnx("unable to get time of day");
return (0L);
}
#define OFFSET ((u_long)25567 * 24*60*60)
return (htonl((long)(tv.tv_sec + OFFSET)));
#define OFFSET ((uint32_t)25567 * 24*60*60)
return (htonl((uint32_t)(tv.tv_sec + OFFSET)));
#undef OFFSET
}
@ -704,7 +704,7 @@ machtime(void)
void
machtime_dg(int s, struct servtab *sep)
{
unsigned long result;
uint32_t result;
struct sockaddr_storage ss;
socklen_t size;
@ -725,7 +725,7 @@ machtime_dg(int s, struct servtab *sep)
void
machtime_stream(int s, struct servtab *sep __unused)
{
unsigned long result;
uint32_t result;
result = machtime();
(void) send(s, (char *) &result, sizeof(result), MSG_EOF);