169 lines
4.0 KiB
Plaintext
169 lines
4.0 KiB
Plaintext
--- display.c.orig Wed Nov 6 17:59:38 1996
|
|
+++ display.c Sun Feb 24 22:01:59 2002
|
|
@@ -27,7 +27,10 @@
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
-#include <alloca.h>
|
|
+#include <stdlib.h>
|
|
+#include <unistd.h>
|
|
+#include <string.h>
|
|
+#include <ctype.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/time.h>
|
|
@@ -40,6 +43,7 @@
|
|
#include <netinet/ip_icmp.h>
|
|
#include <netinet/tcp.h>
|
|
#include <netinet/udp.h>
|
|
+#include <arpa/inet.h>
|
|
|
|
#include <sgtty.h>
|
|
|
|
@@ -59,8 +63,10 @@
|
|
static void write_stoc(); /* Server to Client */
|
|
static void initialize_screen(); /* Clear screen, setup windows, etc */
|
|
static void dump_handler();
|
|
+extern void cleanup_output();
|
|
extern int ignore_user;
|
|
|
|
+void
|
|
display_connection(input_filename, con_id)
|
|
char *input_filename;
|
|
int con_id;
|
|
@@ -108,7 +114,6 @@
|
|
}
|
|
|
|
pcap_close(pcp);
|
|
- return;
|
|
}
|
|
|
|
char init_user=0;
|
|
@@ -136,15 +141,13 @@
|
|
struct ip *ip;
|
|
struct tcphdr *tcph;
|
|
u_char *abuf, *abuf2;
|
|
- int flags, length;
|
|
+ int length;
|
|
static struct timeval last_time;
|
|
static int offset_set=0;
|
|
- struct timeval ct;
|
|
|
|
fd_set fdset;
|
|
struct timeval timeout;
|
|
char inchar;
|
|
- char outbuf[64];
|
|
|
|
/* tjk timing */
|
|
static struct timeval session_start, cur_delta;
|
|
@@ -218,14 +221,14 @@
|
|
}
|
|
|
|
for (;;) {
|
|
- int sel_out;
|
|
struct timeval t1,t2,t3;
|
|
|
|
bcopy(subtract_timeval(&pkth->ts, &session_start),
|
|
&t1, sizeof(struct timeval));
|
|
bcopy(subtract_timeval(&pkth->ts, &last_time),
|
|
&t2, sizeof(struct timeval));
|
|
- last_time = pkth->ts;
|
|
+ last_time.tv_sec = pkth->ts.tv_sec;
|
|
+ last_time.tv_usec = pkth->ts.tv_usec;
|
|
|
|
timeout = t2;
|
|
|
|
@@ -477,12 +480,10 @@
|
|
|
|
if (length > 46) {
|
|
len = 46;
|
|
- strncpy(s, p+(length-46), len); /* Get last 46 characters */
|
|
- *(s+len)=0;
|
|
+ strlcpy(s, p+(length-46), len); /* Get last 46 characters */
|
|
} else {
|
|
len = length;
|
|
- strncpy(s, p, len);
|
|
- *(s+len)=0;
|
|
+ strlcpy(s, p, len);
|
|
}
|
|
|
|
mode=0;
|
|
@@ -561,8 +562,7 @@
|
|
if (len == 46) {
|
|
printf("\033[26;34H\033[7m%s\033[0m", new_buffer);
|
|
former_buflen = 46;
|
|
- strncpy(former_buffer, printable, len);
|
|
- *(former_buffer+len)=0;
|
|
+ strlcpy(former_buffer, printable, len);
|
|
} else {
|
|
if ((former_buflen + len) > 46) {
|
|
diff = (former_buflen + len - 46);
|
|
@@ -572,17 +572,14 @@
|
|
printf("\033[26;%dH", 34+former_buflen-(diff));
|
|
printf("\033[7m%s\033[0m", new_buffer);
|
|
former_buflen = 46;
|
|
- strncpy(temp, former_buffer+diff, 46-diff);
|
|
- *(temp+(46-diff))=0;
|
|
- strcat(temp, printable, len);
|
|
- *(temp+46)=0;
|
|
+ strlcpy(temp, former_buffer+diff, 46-diff);
|
|
+ strlcat(temp, printable, len);
|
|
strcpy(former_buffer, temp);
|
|
} else {
|
|
printf("\033[26;%dH", 34+former_buflen);
|
|
printf("\033[7m%s\033[0m", new_buffer);
|
|
former_buflen += len;
|
|
- strncat(former_buffer, printable, len);
|
|
- *(former_buffer+former_buflen)=0;
|
|
+ strlcat(former_buffer, printable, len);
|
|
}
|
|
}
|
|
}
|
|
@@ -600,7 +597,7 @@
|
|
char *p;
|
|
int length;
|
|
{
|
|
- char *x, *y, *beg, value;
|
|
+ char *x, value, *beg = NULL;
|
|
int i;
|
|
int redraw_status=0;
|
|
enum { STATE_NOTHING, STATE_ESCAPE, STATE_BRACKET, STATE_ARGUMENTS } state;
|
|
@@ -741,6 +738,7 @@
|
|
static FILE *sfp=NULL, *cfp=NULL;
|
|
static char dumpbase[1024];
|
|
|
|
+void
|
|
dump_connection(input_filename, con_id)
|
|
char *input_filename;
|
|
int con_id;
|
|
@@ -754,7 +752,8 @@
|
|
printf("Enter basename for output files (server side will append '.srv', client '.cli'\n");
|
|
printf(":");
|
|
fflush(stdout);
|
|
- gets(dumpbase);
|
|
+ fgets(dumpbase, sizeof(dumpbase), stdin);
|
|
+ strtok(dumpbase, "\r\n");
|
|
|
|
if ((pcp = pcap_open_offline(input_filename, ebuf)) == NULL) {
|
|
fprintf(stderr, "Can't open input file: %s\n", ebuf);
|
|
@@ -798,8 +797,6 @@
|
|
printf("NOTE: You may want to run:\n");
|
|
printf("tr -d '\\015' <basename.srv - and/or -\n");
|
|
printf("tr '\\015' '\\012' <basename.cli\n");
|
|
-
|
|
- return;
|
|
}
|
|
|
|
static void
|
|
@@ -812,9 +809,7 @@
|
|
struct ip *ip;
|
|
struct tcphdr *tcph;
|
|
u_char *abuf, *abuf2;
|
|
- int flags, length;
|
|
- char inchar;
|
|
- char outbuf[64];
|
|
+ int length;
|
|
char buf[1024], buf2[1024];
|
|
|
|
if (sfp==NULL) {
|