170 lines
4.4 KiB
Plaintext
170 lines
4.4 KiB
Plaintext
$OpenBSD: patch-display_c,v 1.1 2007/10/26 21:38:24 jasper Exp $
|
|
--- display.c.orig Wed Nov 6 23:59:38 1996
|
|
+++ display.c Fri Oct 26 23:33:35 2007
|
|
@@ -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_ctos(); /* Client to server */
|
|
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 @@ int con_id;
|
|
}
|
|
|
|
pcap_close(pcp);
|
|
- return;
|
|
}
|
|
|
|
char init_user=0;
|
|
@@ -136,15 +141,13 @@ u_char *p;
|
|
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 @@ u_char *p;
|
|
}
|
|
|
|
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 @@ int length; /* length of p, 0 to do diffs, -1 to do co
|
|
|
|
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 @@ int length; /* length of p, 0 to do diffs, -1 to do co
|
|
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 @@ int length; /* length of p, 0 to do diffs, -1 to do co
|
|
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 @@ struct timeval *ts;
|
|
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 @@ initialize_screen() /* Clear screen, setup windows, et
|
|
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 @@ int con_id;
|
|
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 @@ int con_id;
|
|
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 @@ u_char *p;
|
|
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) {
|