version 1.1.1.5, 2012/05/02 02:13:08 |
version 1.1.1.6, 2012/12/12 16:52:23 |
|
|
/* $OpenBSD: mux.c,v 1.34 2012/01/07 21:11:36 djm Exp $ */ |
/* $OpenBSD: mux.c,v 1.36 2012/07/06 01:37:21 djm Exp $ */ |
/* |
/* |
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> |
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> |
* |
* |
Line 299 process_mux_new_session(u_int rid, Chann |
|
Line 299 process_mux_new_session(u_int rid, Chann |
|
cctx->term = NULL; |
cctx->term = NULL; |
cctx->rid = rid; |
cctx->rid = rid; |
cmd = reserved = NULL; |
cmd = reserved = NULL; |
|
cctx->env = NULL; |
|
env_len = 0; |
if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || |
if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || |
buffer_get_int_ret(&cctx->want_tty, m) != 0 || |
buffer_get_int_ret(&cctx->want_tty, m) != 0 || |
buffer_get_int_ret(&cctx->want_x_fwd, m) != 0 || |
buffer_get_int_ret(&cctx->want_x_fwd, m) != 0 || |
Line 312 process_mux_new_session(u_int rid, Chann |
|
Line 314 process_mux_new_session(u_int rid, Chann |
|
xfree(cmd); |
xfree(cmd); |
if (reserved != NULL) |
if (reserved != NULL) |
xfree(reserved); |
xfree(reserved); |
|
for (j = 0; j < env_len; j++) |
|
xfree(cctx->env[j]); |
|
if (env_len > 0) |
|
xfree(cctx->env); |
if (cctx->term != NULL) |
if (cctx->term != NULL) |
xfree(cctx->term); |
xfree(cctx->term); |
|
xfree(cctx); |
error("%s: malformed message", __func__); |
error("%s: malformed message", __func__); |
return -1; |
return -1; |
} |
} |
xfree(reserved); |
xfree(reserved); |
reserved = NULL; |
reserved = NULL; |
|
|
cctx->env = NULL; |
|
env_len = 0; |
|
while (buffer_len(m) > 0) { |
while (buffer_len(m) > 0) { |
#define MUX_MAX_ENV_VARS 4096 |
#define MUX_MAX_ENV_VARS 4096 |
if ((cp = buffer_get_string_ret(m, &len)) == NULL) |
if ((cp = buffer_get_string_ret(m, &len)) == NULL) |
Line 396 process_mux_new_session(u_int rid, Chann |
|
Line 401 process_mux_new_session(u_int rid, Chann |
|
xfree(cctx->env); |
xfree(cctx->env); |
} |
} |
buffer_free(&cctx->cmd); |
buffer_free(&cctx->cmd); |
|
xfree(cctx); |
return 0; |
return 0; |
} |
} |
|
|
Line 1177 muxserver_listen(void) |
|
Line 1183 muxserver_listen(void) |
|
close(muxserver_sock); |
close(muxserver_sock); |
muxserver_sock = -1; |
muxserver_sock = -1; |
} |
} |
|
xfree(orig_control_path); |
xfree(options.control_path); |
xfree(options.control_path); |
options.control_path = NULL; |
options.control_path = NULL; |
options.control_master = SSHCTL_MASTER_NO; |
options.control_master = SSHCTL_MASTER_NO; |
Line 1198 muxserver_listen(void) |
|
Line 1205 muxserver_listen(void) |
|
} |
} |
error("ControlSocket %s already exists, disabling multiplexing", |
error("ControlSocket %s already exists, disabling multiplexing", |
orig_control_path); |
orig_control_path); |
xfree(orig_control_path); |
|
unlink(options.control_path); |
unlink(options.control_path); |
goto disable_mux_master; |
goto disable_mux_master; |
} |
} |