diff options
author | dtucker <dtucker@openbsd.org> | 2019-05-03 04:11:00 +0000 |
---|---|---|
committer | dtucker <dtucker@openbsd.org> | 2019-05-03 04:11:00 +0000 |
commit | 63d7a139bbb72b61f76de07cd02b7ccde327b48f (patch) | |
tree | 7068cd3b4674542f87b95b0a0332300f0d7f606c /usr.bin/ssh/channels.c | |
parent | basic macro cleanup; from Fabio Scotoni <fabio at esse dot ch> (diff) | |
download | wireguard-openbsd-63d7a139bbb72b61f76de07cd02b7ccde327b48f.tar.xz wireguard-openbsd-63d7a139bbb72b61f76de07cd02b7ccde327b48f.zip |
Free channel objects on exit path. Patch from markus at blueflash.cc,
ok deraadt
Diffstat (limited to 'usr.bin/ssh/channels.c')
-rw-r--r-- | usr.bin/ssh/channels.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/usr.bin/ssh/channels.c b/usr.bin/ssh/channels.c index 5556d975143..e8bb75028df 100644 --- a/usr.bin/ssh/channels.c +++ b/usr.bin/ssh/channels.c @@ -1,4 +1,4 @@ -/* $OpenBSD: channels.c,v 1.389 2019/01/19 21:37:13 djm Exp $ */ +/* $OpenBSD: channels.c,v 1.390 2019/05/03 04:11:00 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -629,10 +629,30 @@ void channel_free_all(struct ssh *ssh) { u_int i; + struct ssh_channels *sc = ssh->chanctxt; - for (i = 0; i < ssh->chanctxt->channels_alloc; i++) - if (ssh->chanctxt->channels[i] != NULL) - channel_free(ssh, ssh->chanctxt->channels[i]); + for (i = 0; i < sc->channels_alloc; i++) + if (sc->channels[i] != NULL) + channel_free(ssh, sc->channels[i]); + + free(sc->channels); + sc->channels = NULL; + sc->channels_alloc = 0; + sc->channel_max_fd = 0; + + free(sc->x11_saved_display); + sc->x11_saved_display = NULL; + + free(sc->x11_saved_proto); + sc->x11_saved_proto = NULL; + + free(sc->x11_saved_data); + sc->x11_saved_data = NULL; + sc->x11_saved_data_len = 0; + + free(sc->x11_fake_data); + sc->x11_fake_data = NULL; + sc->x11_fake_data_len = 0; } /* |