aboutsummaryrefslogtreecommitdiff
path: root/src/gzip.c
diff options
context:
space:
mode:
authorJakub Jelen <jjelen@redhat.com>2018-11-22 15:57:37 +0100
committerAndreas Schneider <asn@cryptomilk.org>2019-01-09 10:14:56 +0100
commit8e0c047031d69bdf882f550886e3dd43afd8db05 (patch)
tree0ffd94b05abc4693c92efe60492fca690bd9dd32 /src/gzip.c
parent8d9026666190eecc55548899461b83a4f6cf45ce (diff)
downloadlibssh-8e0c047031d69bdf882f550886e3dd43afd8db05.tar.gz
libssh-8e0c047031d69bdf882f550886e3dd43afd8db05.tar.xz
libssh-8e0c047031d69bdf882f550886e3dd43afd8db05.zip
packet: Introduce a new function to access crypto
And remove most of the direct access to the structure throughout the code Signed-off-by: Jakub Jelen <jjelen@redhat.com> Reviewed-by: Daiki Ueno <dueno@redhat.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/gzip.c')
-rw-r--r--src/gzip.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/gzip.c b/src/gzip.c
index 23c9d0de..38f0de72 100644
--- a/src/gzip.c
+++ b/src/gzip.c
@@ -55,8 +55,10 @@ static z_stream *initcompress(ssh_session session, int level) {
return stream;
}
-static ssh_buffer gzip_compress(ssh_session session,ssh_buffer source,int level){
- z_stream *zout = session->current_crypto->compress_out_ctx;
+static ssh_buffer gzip_compress(ssh_session session, ssh_buffer source, int level)
+{
+ struct ssh_crypto_struct *crypto = NULL;
+ z_stream *zout = NULL;
void *in_ptr = ssh_buffer_get(source);
unsigned long in_size = ssh_buffer_get_len(source);
ssh_buffer dest = NULL;
@@ -64,8 +66,10 @@ static ssh_buffer gzip_compress(ssh_session session,ssh_buffer source,int level)
unsigned long len;
int status;
- if(zout == NULL) {
- zout = session->current_crypto->compress_out_ctx = initcompress(session, level);
+ crypto = ssh_packet_get_current_crypto(session, SSH_DIRECTION_OUT);
+ zout = crypto->compress_out_ctx;
+ if (zout == NULL) {
+ zout = crypto->compress_out_ctx = initcompress(session, level);
if (zout == NULL) {
return NULL;
}
@@ -143,8 +147,10 @@ static z_stream *initdecompress(ssh_session session) {
return stream;
}
-static ssh_buffer gzip_decompress(ssh_session session, ssh_buffer source, size_t maxlen) {
- z_stream *zin = session->current_crypto->compress_in_ctx;
+static ssh_buffer gzip_decompress(ssh_session session, ssh_buffer source, size_t maxlen)
+{
+ struct ssh_crypto_struct *crypto = NULL;
+ z_stream *zin = NULL;
void *in_ptr = ssh_buffer_get(source);
unsigned long in_size = ssh_buffer_get_len(source);
unsigned char out_buf[BLOCKSIZE] = {0};
@@ -152,8 +158,10 @@ static ssh_buffer gzip_decompress(ssh_session session, ssh_buffer source, size_t
unsigned long len;
int status;
+ crypto = ssh_packet_get_current_crypto(session, SSH_DIRECTION_IN);
+ zin = crypto->compress_in_ctx;
if (zin == NULL) {
- zin = session->current_crypto->compress_in_ctx = initdecompress(session);
+ zin = crypto->compress_in_ctx = initdecompress(session);
if (zin == NULL) {
return NULL;
}