File resplen.patch of Package xjdic
diff -ru xjdic.orig/xjdfrontend.c xjdic/xjdfrontend.c
--- xjdic.orig/xjdfrontend.c 2003-09-18 14:56:09.000000000 +0200
+++ xjdic/xjdfrontend.c 2003-09-18 14:57:06.000000000 +0200
@@ -1129,7 +1129,7 @@
{
int xjresp,roff,rlen;
- unsigned char repstr[512];
+ unsigned char repstr[RESPLEN];
long respos;
int hit,schix;
unsigned char khi,klo,cc,ops[4];
@@ -1319,7 +1319,7 @@
unsigned char vlast[11],temp[11],ops[80];
int vi,vok,prevch,KDNSflag,KDskip,KTest;
int xjresp,roff,rlen;
- unsigned char repstr[512];
+ unsigned char repstr[RESPLEN];
unsigned long respos;
vlast[0] = 0;
diff -ru xjdic.orig/xjdic.h xjdic/xjdic.h
--- xjdic.orig/xjdic.h 2003-05-28 07:54:29.000000000 +0200
+++ xjdic/xjdic.h 2003-09-18 14:58:25.000000000 +0200
@@ -18,6 +18,7 @@
#define RADLOOKLIM 2*20 /*threshold for displaying results of radical
lookup (default 20) */
#define MAXITER 40 /*maximum binary search iterations*/
+#define RESPLEN 1024 /*maximum length of dictionary entry*/
/* The following is for Solarises */
@@ -66,5 +67,5 @@
short xjdrsp_hitposn;
short xjdrsp_reslen;
long xjdrsp_dicloc;
- unsigned char xjdrsp_resstr[512];
+ unsigned char xjdrsp_resstr[1024];
} RSP_PDU;
diff -ru xjdic.orig/xjdsa.c xjdic/xjdsa.c
--- xjdic.orig/xjdsa.c 1998-08-30 02:31:20.000000000 +0200
+++ xjdic/xjdsa.c 2003-09-18 14:57:06.000000000 +0200
@@ -186,10 +186,10 @@
*dic_loc = schix;
for (i = 0; dbchar(schix+i) != 0x0a; i++)
{
- if (i == 512)
+ if (i == RESPLEN)
{
- printf ("Reply overrun\n");
- exit(1);
+ printf ("Entry length exceeded\n");
+ break;
}
res_str[i] = dbchar(schix+i);
}
diff -ru xjdic.orig/xjdserver.c xjdic/xjdserver.c
--- xjdic.orig/xjdserver.c 2003-05-28 07:58:02.000000000 +0200
+++ xjdic/xjdserver.c 2003-09-18 14:57:06.000000000 +0200
@@ -132,7 +132,7 @@
ntohs(pdu_out.xjdrsp_reslen),
pdu_out.xjdrsp_resstr,
temp);
- i = sendto (sock, (RSP_PDU *) &pdu_out, sizeof(pdu_out)-512+strlen(pdu_out.xjdrsp_resstr)+1,
+ i = sendto (sock, (RSP_PDU *) &pdu_out, sizeof(pdu_out)-RESPLEN+strlen(pdu_out.xjdrsp_resstr)+1,
0, (struct sockaddr *)&fsin, sizeof(fsin));
if (i < 0)
{