diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-04-02 23:05:19 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-04-02 23:05:19 +0800 |
commit | c72299766768d9c73ad7ee2eda23afb5033eaec7 (patch) | |
tree | bca39c0930d4028ed811708c2bf6c0100a6541e3 | |
parent | c8d90b8979e46a73fd64603739465d38c225669e (diff) | |
download | pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar.gz pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar.bz2 pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar.lz pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar.xz pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.tar.zst pttbbs-c72299766768d9c73ad7ee2eda23afb5033eaec7.zip |
- [announce] fix copy-paste endless loop (reported by Kinra@ptt1, thanks)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4068 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | mbbsd/announce.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mbbsd/announce.c b/mbbsd/announce.c index 6abae9bc..6e09946d 100644 --- a/mbbsd/announce.c +++ b/mbbsd/announce.c @@ -595,7 +595,8 @@ a_appenditem(const menu_t * pm, int isask) snprintf(fname, sizeof(fname), "%s/%s", pm->path, pm->header[pm->now - pm->page].filename); - if (!dashf(fname)) { + // if same file, abort. + if (!dashf(fname) || strcmp(fname, cq->copyfile) == 0) { vmsg("檔案不得附加於此!"); return; } @@ -629,7 +630,10 @@ a_appenditem(const menu_t * pm, int isask) "是否收錄簽名檔部份(Y/N)?[Y] ", ans, sizeof(ans), LCECHO); - while (fgets(buf, sizeof(buf), fin)) { + // XXX reported by Kinra, appending same file may cause endless loop here. + // we check file name at prior steps and do file size check here. + while (sz > 0 && fgets(buf, sizeof(buf), fin)) { + sz -= strlen(buf); if ((ans[0] == 'n') && !strcmp(buf, "--\n")) break; |