summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2012-10-14 00:45:37 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2012-10-14 00:45:37 +0800
commit5e7058be8ef54fe86ea7329bb5362bce792db649 (patch)
treeb5265fe5ed4a50fa928fc59111fb9e40c320604c
parent49ed5e4a02dcd07b1402e528ebcc93dbef647fc9 (diff)
downloadpttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar.gz
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar.bz2
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar.lz
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar.xz
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.tar.zst
pttbbs-5e7058be8ef54fe86ea7329bb5362bce792db649.zip
Fix "injecting control chars (Ex, 0x08) by using OFO + reply short message"
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5707 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/talk.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/pttbbs/mbbsd/talk.c b/pttbbs/mbbsd/talk.c
index 11fa147c..8c9e019c 100644
--- a/pttbbs/mbbsd/talk.c
+++ b/pttbbs/mbbsd/talk.c
@@ -679,7 +679,9 @@ my_write2(void)
if (!tw->uin)
break;
- if (ch != '\r' && ch != '\n') {
+ // TODO(piaip) 這裡很危險。使用者可能趁機亂塞東西進 buf.
+ // 另外 KEY_UP 之類的是 >0xFF 所以或許我們該徹查一下 isascii 的判斷。
+ if ((ch < 0x100 && !isascii(ch)) || isprint(ch)) {
msg[0] = ch, msg[1] = 0;
} else
msg[0] = 0;