diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2002-07-03 00:13:37 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2002-07-03 00:13:37 +0800 |
commit | 97c6cc24030daf8fe09ff861d10d2ac723ac72e1 (patch) | |
tree | f0fb9d12b0f82c287f77e9508ed7b9e7dabfe732 | |
parent | 9b53a258db477c1eabbdf24c8f368895e6c133c0 (diff) | |
download | pttbbs-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.c | 9 |
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; } |