54 lines
1.4 KiB
Diff
54 lines
1.4 KiB
Diff
|
diff --exclude='*~' --exclude='.*' -I '$Id:' -urN dog-1.7.orig/dog.c dog-1.7/dog.c
|
||
|
--- dog-1.7.orig/dog.c 2005-05-13 08:01:37.000000000 -0400
|
||
|
+++ dog-1.7/dog.c 2005-05-13 08:30:38.000000000 -0400
|
||
|
@@ -36,6 +36,7 @@
|
||
|
#include <string.h>
|
||
|
#include "getopt.h"
|
||
|
#include <limits.h>
|
||
|
+#include <time.h>
|
||
|
#include <netdb.h>
|
||
|
|
||
|
// this is fun
|
||
|
@@ -1321,26 +1322,35 @@
|
||
|
InetSockAddr sa;
|
||
|
int newsock;
|
||
|
uint32 ipAddr;
|
||
|
- int k;
|
||
|
+ socklen_t k;
|
||
|
time_t curr_time;
|
||
|
char curr_date[64];
|
||
|
|
||
|
k = sizeof(sa);
|
||
|
while ((newsock=accept(sock,(struct sockaddr*)&sa,&k)) != -1) {
|
||
|
if (!no_bind_header) {
|
||
|
+ char *result = NULL;
|
||
|
ipAddr = ntohl(sa.addr);
|
||
|
time(&curr_time);
|
||
|
- strcpy(curr_date,ctime(&curr_time));
|
||
|
+ if (!(result = ctime(&curr_time))) {
|
||
|
+ perror("ctime");
|
||
|
+ goto done;
|
||
|
+ }
|
||
|
+ strncpy(curr_date, result, sizeof(curr_date) - 1);
|
||
|
while (!isalnum(curr_date[strlen(curr_date)-1])) {
|
||
|
curr_date[strlen(curr_date)-1] = 0;
|
||
|
}
|
||
|
printf("# %s from %d.%d.%d.%d:%d\n",curr_date,(int)ipAddr>>24,(int)(ipAddr>>16)&0xff,(int)(ipAddr>>8)&0xff,(int)ipAddr&0xff,ntohs(sa.port));
|
||
|
}
|
||
|
- straight_dump = newsock;
|
||
|
- DumpThings(argc,argv,hang_up_bind ? -1 : newsock);
|
||
|
- if (hang_up_bind) {
|
||
|
+
|
||
|
+ goto done;
|
||
|
+
|
||
|
+ done:
|
||
|
+ straight_dump = newsock;
|
||
|
+ DumpThings(argc,argv,hang_up_bind ? -1 : newsock);
|
||
|
+ if (hang_up_bind) {
|
||
|
close(newsock);
|
||
|
- }
|
||
|
+ }
|
||
|
}
|
||
|
}
|
||
|
|