mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-19 03:58:05 -05:00
RDB's session logging patch: due to some ghastly special case, UTF-8
characters that failed the UTF-8 canonicality rules were being sent to the session log twice. Sounds trivial, but I bet it'd have confused anyone who turned on session logging precisely to track down a canonicality bug :-) [originally from svn r1244]
This commit is contained in:
parent
3c74c01014
commit
e2c086b090
17
terminal.c
17
terminal.c
@ -934,14 +934,17 @@ void term_out(void)
|
|||||||
{
|
{
|
||||||
int c, inbuf_reap;
|
int c, inbuf_reap;
|
||||||
|
|
||||||
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
|
|
||||||
c = inbuf[inbuf_reap];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Optionally log the session traffic to a file. Useful for
|
* Optionally log the session traffic to a file. Useful for
|
||||||
* debugging and possibly also useful for actual logging.
|
* debugging and possibly also useful for actual logging.
|
||||||
*/
|
*/
|
||||||
logtraffic((unsigned char) c, LGTYP_DEBUG);
|
if (cfg.logtype == LGTYP_DEBUG)
|
||||||
|
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
|
||||||
|
logtraffic((unsigned char) inbuf[inbuf_reap], LGTYP_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (inbuf_reap = 0; inbuf_reap < inbuf_head; inbuf_reap++) {
|
||||||
|
c = inbuf[inbuf_reap];
|
||||||
|
|
||||||
/* Note only VT220+ are 8-bit VT102 is seven bit, it shouldn't even
|
/* Note only VT220+ are 8-bit VT102 is seven bit, it shouldn't even
|
||||||
* be able to display 8-bit characters, but I'll let that go 'cause
|
* be able to display 8-bit characters, but I'll let that go 'cause
|
||||||
@ -985,9 +988,9 @@ void term_out(void)
|
|||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
if ((c & 0xC0) != 0x80) {
|
if ((c & 0xC0) != 0x80) {
|
||||||
inbuf_reap--; /* This causes the faulting character */
|
inbuf_reap--;
|
||||||
c = UCSERR; /* to be logged twice - not really a */
|
c = UCSERR;
|
||||||
utf_state = 0; /* serious problem. */
|
utf_state = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
utf_char = (utf_char << 6) | (c & 0x3f);
|
utf_char = (utf_char << 6) | (c & 0x3f);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user