diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-06-10 21:13:29 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-06-10 21:13:29 +0800 |
commit | ccdd1daaeaba036bd88b31f076a2a5afacdc0b3f (patch) | |
tree | d84c1832c2ff8322f3c5b28d6c416079f0ac919b | |
parent | 7ba85da008b3ececedb56a345b4024816542f6b5 (diff) | |
download | pttbbs-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.c | 4 |
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. */ |