summaryrefslogtreecommitdiffstats
path: root/mbbsd/bbs.c
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-01-31 14:02:30 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-01-31 14:02:30 +0800
commitb481abda1097e9f729bece14b34d7e3b741f73d8 (patch)
tree68c0913b1c48c9871ee0bc4d7c204be2adf0a968 /mbbsd/bbs.c
parent6113d7160492346d01db7b618d676733e6995437 (diff)
downloadpttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar.gz
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar.bz2
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar.lz
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar.xz
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.tar.zst
pttbbs-b481abda1097e9f729bece14b34d7e3b741f73d8.zip
- more checks on fhdr to prevent crash
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3895 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r--mbbsd/bbs.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index f77c8310..81ed82a8 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -1277,6 +1277,8 @@ static int
do_reply(/*const*/ fileheader_t * fhdr)
{
boardheader_t *bp;
+ if (!fhdr || !fhdr->filename[0])
+ return DONOTHING;
if (!CheckPostPerm() ) return DONOTHING;
if (fhdr->filemode &FILE_SOLVED)
{
@@ -1874,7 +1876,7 @@ read_post(int ent, fileheader_t * fhdr, const char *direct)
char genbuf[100];
int more_result;
- if (fhdr->owner[0] == '-' || fhdr->filename[0] == 'L')
+ if (fhdr->owner[0] == '-' || fhdr->filename[0] == 'L' || !fhdr->filename[0])
return READ_SKIP;
STATINC(STAT_READPOST);
@@ -2578,6 +2580,9 @@ recommend(int ent, fileheader_t * fhdr, const char *direct)
char oldrecom = fhdr->recommend;
#endif // ASSESS
+ if (!fhdr || !fhdr->filename[0])
+ return DONOTHING;
+
assert(0<=currbid-1 && currbid-1<MAX_BOARD);
bp = getbcache(currbid);
if (bp->brdattr & BRD_NORECOMMEND || fhdr->filename[0] == 'L' ||
@@ -3197,7 +3202,7 @@ view_postinfo(int ent, const fileheader_t * fhdr, const char *direct, int crs_ln
int area_l = l + 1;
const int area_lines = 4;
- if(fhdr->filename[0] == '.')
+ if(!fhdr || fhdr->filename[0] == '.' || !fhdr->filename[0])
return DONOTHING;
if((area_l + area_lines > b_lines) || /* 下面放不下 */