simon-git: putty (main): Simon Tatham

Commits to Tartarus hosted VCS tartarus-commits at lists.tartarus.org
Sat Dec 7 19:53:12 GMT 2024


TL;DR:
  296b6291 GTK: fix a crash when clicking Cancel on Change Settings.
  7da34495 Fix error message when KEXINIT negotiation fails.

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-07 19:53:12

commit 296b6291d39c0cf118cd3081c3ab86a5889eb4d9
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=296b6291d39c0cf118cd3081c3ab86a5889eb4d9;hp=6a88b294276b9c24584efa18b9a37f437fa46712
Author: Simon Tatham <anakin at pobox.com>
Date:   Sat Dec 7 09:37:15 2024 +0000

    GTK: fix a crash when clicking Cancel on Change Settings.
    
    I only observed this in the GTK1 build, but I don't know for sure it
    can't happen in other situations, so there's no reason not to be
    careful.
    
    What seems to happen is that when the user clicks Cancel on the Change
    Settings dialog box, we call gtk_widget_destroy on the window, which
    emits the "destroy" signal on the window, our handler for which frees
    the whole dlgparam. But _then_ GTK goes through and cleans up all the
    sub-widgets of the dialog box, and some of those generate extra
    events. In particular, destroying a list box is done by first deleting
    all the list entries - and if one of those is selected, the list box's
    selection changes, triggering an event which calls our callback that
    tries to look up the control in the dlgparam we just freed.
    
    My simple workaround is to defer actually freeing the dlgparam, via a
    toplevel callback. Then it's still lying around empty while all those
    random events are firing.

 unix/dialog.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

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

    Fix error message when KEXINIT negotiation fails.
    
    By putting the wrong error-type enum value in a ScanKexinitsResult, I
    accidentally caused nonsense messages of the form
    
      Selected key exchange algorithm "foo,bar,baz" does not correspond to any supported algorithm
    
    where "foo,bar,baz" is the full comma-separated list sent by the
    server, so it's not even _an_ algorithm as the message suggests.
    
    Now the message is the one it should have been all along:
    
      Couldn't agree a key exchange algorithm (available: foo,bar,baz)

 ssh/transport2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



More information about the tartarus-commits mailing list