summaryrefslogtreecommitdiffstats
path: root/libssh/src/wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/src/wrapper.c')
-rw-r--r--libssh/src/wrapper.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/libssh/src/wrapper.c b/libssh/src/wrapper.c
index 66593461..51688753 100644
--- a/libssh/src/wrapper.c
+++ b/libssh/src/wrapper.c
@@ -158,7 +158,7 @@ void crypto_free(struct ssh_crypto_struct *crypto){
SAFE_FREE(crypto->kex_methods[i]);
}
- memset(crypto,0,sizeof(*crypto));
+ BURN_BUFFER(crypto, sizeof(struct ssh_crypto_struct));
SAFE_FREE(crypto);
}
@@ -317,8 +317,13 @@ int crypt_set_algorithms_server(ssh_session session){
session->next_crypto->do_compress_in=1;
}
if(strcmp(method,"zlib@openssh.com") == 0){
- SSH_LOG(SSH_LOG_PACKET,"enabling C->S compression");
- session->next_crypto->delayed_compress_in=1;
+ SSH_LOG(SSH_LOG_PACKET,"enabling C->S delayed compression");
+
+ if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED) {
+ session->next_crypto->do_compress_in = 1;
+ } else {
+ session->next_crypto->delayed_compress_in = 1;
+ }
}
method = session->next_crypto->kex_methods[SSH_COMP_S_C];
@@ -328,7 +333,12 @@ int crypt_set_algorithms_server(ssh_session session){
}
if(strcmp(method,"zlib@openssh.com") == 0){
SSH_LOG(SSH_LOG_PACKET,"enabling S->C delayed compression\n");
- session->next_crypto->delayed_compress_out=1;
+
+ if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED) {
+ session->next_crypto->do_compress_out = 1;
+ } else {
+ session->next_crypto->delayed_compress_out = 1;
+ }
}
method = session->next_crypto->kex_methods[SSH_HOSTKEYS];