summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-06-10 21:13:29 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-06-10 21:13:29 +0800
commitccdd1daaeaba036bd88b31f076a2a5afacdc0b3f (patch)
treed84c1832c2ff8322f3c5b28d6c416079f0ac919b
parent7ba85da008b3ececedb56a345b4024816542f6b5 (diff)
downloadpttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar.gz
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar.bz2
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar.lz
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar.xz
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.tar.zst
pttbbs-ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f.zip
* fix: telnet protocol state error: quotes must be also considered in prescan.
* this error will occur if input buffer is small and split IAC in the middle. git-svn-id: http://opensvn.csie.org/pttbbs/trunk@4540 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/common/sys/telnet.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/pttbbs/common/sys/telnet.c b/pttbbs/common/sys/telnet.c
index ddb3de07..7c1e12c1 100644
--- a/pttbbs/common/sys/telnet.c
+++ b/pttbbs/common/sys/telnet.c
@@ -108,7 +108,9 @@ ssize_t telnet_process(TelnetCtx *ctx, unsigned char *buf, ssize_t size)
/* prescan. because IAC is rare,
* this cost is worthy. */
- if (ctx->iac_state == IAC_NONE && memchr(buf, IAC, size) == NULL)
+ if (ctx->iac_state == IAC_NONE &&
+ !ctx->iac_quote &&
+ memchr(buf, IAC, size) == NULL)
return size;
/* we have to look into the buffer. */