summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-07-03 00:13:37 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-07-03 00:13:37 +0800
commit97c6cc24030daf8fe09ff861d10d2ac723ac72e1 (patch)
treef0fb9d12b0f82c287f77e9508ed7b9e7dabfe732
parent9b53a258db477c1eabbdf24c8f368895e6c133c0 (diff)
downloadpttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar.gz
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar.bz2
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar.lz
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar.xz
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.tar.zst
pttbbs-97c6cc24030daf8fe09ff861d10d2ac723ac72e1.zip
fix buffer overflow, search use last value
git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk@404 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/read.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/pttbbs/mbbsd/read.c b/pttbbs/mbbsd/read.c
index 8fbbf9a9..fe8c871d 100644
--- a/pttbbs/mbbsd/read.c
+++ b/pttbbs/mbbsd/read.c
@@ -1,4 +1,4 @@
-/* $Id: read.c,v 1.6 2002/07/02 15:08:52 in2 Exp $ */
+/* $Id: read.c,v 1.7 2002/07/02 16:13:37 in2 Exp $ */
#include "bbs.h"
#define MAXPATHLEN 256
@@ -461,7 +461,7 @@ static int select_read(keeploc_t *locmem, int sr_mode) {
fileheader_t fh;
char fpath[80], genbuf[MAXPATHLEN], buf3[5];
char static t_ans[TTLEN+1]="";
- char static a_ans[IDLEN+1]="";
+ char static a_ans[TTLEN+1]="";
int fd, fr, size = sizeof(fileheader_t);
struct stat st;
/* rocker.011018: make a reference number for process article */
@@ -479,11 +479,14 @@ static int select_read(keeploc_t *locmem, int sr_mode) {
else
{
char buff[80];
+ char newdata[35];
query = (sr_mode == RS_RELATED) ? t_ans : a_ans;
sprintf(buff, "·j´M%s [%s] ",
(sr_mode == RS_RELATED) ? "¼ÐÃD" : "§@ªÌ", query);
- getdata(b_lines, 0,buff, query, 30, DOECHO);
+ getdata(b_lines, 0, buff, newdata, sizeof(newdata), DOECHO);
+ if( newdata[0] )
+ strcpy(query, newdata);
if(!(*query))
return DONOTHING;
}