diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-01-31 14:02:30 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-01-31 14:02:30 +0800 |
commit | b481abda1097e9f729bece14b34d7e3b741f73d8 (patch) | |
tree | 68c0913b1c48c9871ee0bc4d7c204be2adf0a968 | |
parent | 6113d7160492346d01db7b618d676733e6995437 (diff) | |
download | pttbbs-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
-rw-r--r-- | mbbsd/bbs.c | 9 |
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) || /* 下面放不下 */ |