version 1.75.2.1, 2013/11/08 05:52:21 |
version 1.76, 2013/05/17 00:13:13 |
|
|
#undef M_CP_STRARRAYOPT |
#undef M_CP_STRARRAYOPT |
|
|
copy_set_server_options(&options, newopts, 1); |
copy_set_server_options(&options, newopts, 1); |
xfree(newopts); |
free(newopts); |
|
|
buffer_free(&m); |
buffer_free(&m); |
|
|
|
|
|
|
/* treat empty banner as missing banner */ |
/* treat empty banner as missing banner */ |
if (strlen(banner) == 0) { |
if (strlen(banner) == 0) { |
xfree(banner); |
free(banner); |
banner = NULL; |
banner = NULL; |
} |
} |
return (banner); |
return (banner); |
|
|
buffer_put_cstring(&m, user ? user : ""); |
buffer_put_cstring(&m, user ? user : ""); |
buffer_put_cstring(&m, host ? host : ""); |
buffer_put_cstring(&m, host ? host : ""); |
buffer_put_string(&m, blob, len); |
buffer_put_string(&m, blob, len); |
xfree(blob); |
free(blob); |
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); |
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); |
|
|
|
|
buffer_put_string(&m, blob, len); |
buffer_put_string(&m, blob, len); |
buffer_put_string(&m, sig, siglen); |
buffer_put_string(&m, sig, siglen); |
buffer_put_string(&m, data, datalen); |
buffer_put_string(&m, data, datalen); |
xfree(blob); |
free(blob); |
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); |
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); |
|
|
|
|
buffer_init(&b); |
buffer_init(&b); |
buffer_append(&b, blob, blen); |
buffer_append(&b, blob, blen); |
|
|
newkey = xcalloc(1, sizeof(*newkey)); |
newkey = xmalloc(sizeof(*newkey)); |
enc = &newkey->enc; |
enc = &newkey->enc; |
mac = &newkey->mac; |
mac = &newkey->mac; |
comp = &newkey->comp; |
comp = &newkey->comp; |
|
|
keylen = packet_get_encryption_key(key); |
keylen = packet_get_encryption_key(key); |
buffer_put_string(&m, key, keylen); |
buffer_put_string(&m, key, keylen); |
memset(key, 0, keylen); |
memset(key, 0, keylen); |
xfree(key); |
free(key); |
|
|
ivlen = packet_get_keyiv_len(MODE_OUT); |
ivlen = packet_get_keyiv_len(MODE_OUT); |
packet_get_keyiv(MODE_OUT, iv, ivlen); |
packet_get_keyiv(MODE_OUT, iv, ivlen); |
|
|
fatal("%s: conversion of newkeys failed", __func__); |
fatal("%s: conversion of newkeys failed", __func__); |
|
|
buffer_put_string(&m, blob, bloblen); |
buffer_put_string(&m, blob, bloblen); |
xfree(blob); |
free(blob); |
|
|
if (!mm_newkeys_to_blob(MODE_IN, &blob, &bloblen)) |
if (!mm_newkeys_to_blob(MODE_IN, &blob, &bloblen)) |
fatal("%s: conversion of newkeys failed", __func__); |
fatal("%s: conversion of newkeys failed", __func__); |
|
|
buffer_put_string(&m, blob, bloblen); |
buffer_put_string(&m, blob, bloblen); |
xfree(blob); |
free(blob); |
|
|
packet_get_state(MODE_OUT, &seqnr, &blocks, &packets, &bytes); |
packet_get_state(MODE_OUT, &seqnr, &blocks, &packets, &bytes); |
buffer_put_int(&m, seqnr); |
buffer_put_int(&m, seqnr); |
|
|
p = xmalloc(plen+1); |
p = xmalloc(plen+1); |
packet_get_keycontext(MODE_OUT, p); |
packet_get_keycontext(MODE_OUT, p); |
buffer_put_string(&m, p, plen); |
buffer_put_string(&m, p, plen); |
xfree(p); |
free(p); |
|
|
plen = packet_get_keycontext(MODE_IN, NULL); |
plen = packet_get_keycontext(MODE_IN, NULL); |
p = xmalloc(plen+1); |
p = xmalloc(plen+1); |
packet_get_keycontext(MODE_IN, p); |
packet_get_keycontext(MODE_IN, p); |
buffer_put_string(&m, p, plen); |
buffer_put_string(&m, p, plen); |
xfree(p); |
free(p); |
|
|
/* Compression state */ |
/* Compression state */ |
debug3("%s: Sending compression state", __func__); |
debug3("%s: Sending compression state", __func__); |
|
|
buffer_free(&m); |
buffer_free(&m); |
|
|
strlcpy(namebuf, p, namebuflen); /* Possible truncation */ |
strlcpy(namebuf, p, namebuflen); /* Possible truncation */ |
xfree(p); |
free(p); |
|
|
buffer_append(&loginmsg, msg, strlen(msg)); |
buffer_append(&loginmsg, msg, strlen(msg)); |
xfree(msg); |
free(msg); |
|
|
if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || |
if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || |
(*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1) |
(*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1) |
|
|
if ((key = key_from_blob(blob, blen)) == NULL) |
if ((key = key_from_blob(blob, blen)) == NULL) |
fatal("%s: key_from_blob failed", __func__); |
fatal("%s: key_from_blob failed", __func__); |
*rkey = key; |
*rkey = key; |
xfree(blob); |
free(blob); |
} |
} |
buffer_free(&m); |
buffer_free(&m); |
|
|
|
|
|
|
buffer_init(&m); |
buffer_init(&m); |
buffer_put_string(&m, blob, blen); |
buffer_put_string(&m, blob, blen); |
xfree(blob); |
free(blob); |
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); |
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); |
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); |
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); |
|
|
buffer_init(&m); |
buffer_init(&m); |
buffer_put_string(&m, blob, blen); |
buffer_put_string(&m, blob, blen); |
buffer_put_string(&m, response, 16); |
buffer_put_string(&m, response, 16); |
xfree(blob); |
free(blob); |
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); |
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); |
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); |
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); |