simon-git: putty (main): Simon Tatham

Commits to Tartarus hosted VCS tartarus-commits at lists.tartarus.org
Sat Dec 14 11:52:51 GMT 2024


TL;DR:
  edd5e13f Fix assertion failure on Restart Session.

Repository:     https://git.tartarus.org/simon/putty.git
On the web:     https://git.tartarus.org/?p=simon/putty.git
Branch updated: main
Committer:      Simon Tatham <anakin at pobox.com>
Date:           2024-12-14 11:52:51

commit edd5e13ffc976025443e0b9d75888249aa3325a9
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=edd5e13ffc976025443e0b9d75888249aa3325a9;hp=f8e1a2b3a934d750aba7c26d182f52d71952c529
Author: Simon Tatham <anakin at pobox.com>
Date:   Sat Dec 14 11:44:28 2024 +0000

    Fix assertion failure on Restart Session.
    
    This occurred if the SSH server closed the connection for any
    reason (in practice usually a timeout, but reproducible more easily by
    manually killing a test server process) while the user was in the
    middle of any kind of interactive prompt-based login in the GUI PuTTY
    terminal (be it simple password, k-i, private key passphrase,
    whatever).
    
    The problem was that term->userpass_state wasn't cleaned up when the
    connection died, and then if you started a fresh SSH session in the
    same terminal, the attempt to create a new term->userpass_state would
    find there was one already there.
    
    The simplest place to insert the missing cleanup is the call to
    term_provide_backend(), because that's a terminal API function which
    is already called to notify the terminal that one backend has gone
    away and the next one has turned up.
    
    (In fact, it's called twice, once to set term->backend to NULL when
    the first session closes, and again when the session is restarted. I
    see no harm in making the cleanup unconditional, not bothering to tell
    the difference between the two cases.)

 terminal/terminal.c | 2 ++
 1 file changed, 2 insertions(+)



More information about the tartarus-commits mailing list