Fix a double-free or use-after-free issue with Guile-SSH used with Guile 2.2. See . diff --git a/libguile-ssh/channel-type.c b/libguile-ssh/channel-type.c index 3dd641f..0839854 100644 --- a/libguile-ssh/channel-type.c +++ b/libguile-ssh/channel-type.c @@ -229,10 +229,11 @@ ptob_close (SCM channel) ssh_channel_free (ch->ssh_channel); } + SCM_SETSTREAM (channel, NULL); + #if USING_GUILE_BEFORE_2_2 scm_gc_free (pt->write_buf, pt->write_buf_size, "port write buffer"); scm_gc_free (pt->read_buf, pt->read_buf_size, "port read buffer"); - SCM_SETSTREAM (channel, NULL); return 0; #endif diff --git a/libguile-ssh/sftp-file-type.c b/libguile-ssh/sftp-file-type.c index 8879924..f87cf03 100644 --- a/libguile-ssh/sftp-file-type.c +++ b/libguile-ssh/sftp-file-type.c @@ -224,10 +224,11 @@ ptob_close (SCM sftp_file) sftp_close (fd->file); } + SCM_SETSTREAM (sftp_file, NULL); + #if USING_GUILE_BEFORE_2_2 scm_gc_free (pt->write_buf, pt->write_buf_size, "port write buffer"); scm_gc_free (pt->read_buf, pt->read_buf_size, "port read buffer"); - SCM_SETSTREAM (sftp_file, NULL); return 1; #endif