From 1eb75bcca71b97196c1ad29da5d082a21b12cf00 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 19 Oct 2019 15:30:09 +0000 Subject: [PATCH] Did restore. Segfaults. --- src/b64zlib_compression.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/b64zlib_compression.c b/src/b64zlib_compression.c index 5f51a97..013897e 100644 --- a/src/b64zlib_compression.c +++ b/src/b64zlib_compression.c @@ -98,17 +98,19 @@ return return_value; } -char *ts_decompress(unsigned char *compressed_data, unsigned int data_len, unsigned int result_len){ +char *ts_decompress(unsigned char *compressed_data, unsigned int data_len, size_t *decompressed_length){ const size_t encoded_header_len=24; ts_uint *header; size_t nbase1=0,nbase2=0; header=(ts_uint *)base64_decode((const char *)compressed_data, encoded_header_len, &nbase2); if(header==NULL) fprintf(stderr, "Error decoding header\n"); //fprintf(stderr,"Header=%d, %d, %d, %d\n", header[0],header[1], header[2], header[3]); + unsigned long result_len=header[2]; unsigned char *decoded_data=base64_decode((const char *)&compressed_data[encoded_header_len], data_len-encoded_header_len, &nbase1); if(decoded_data==NULL) fprintf(stderr, "Error decoding compressed data\n"); unsigned char *return_value=(unsigned char *)malloc(result_len*sizeof(char)); - uncompress(return_value, (unsigned long *)&result_len, decoded_data, header[3]); + uncompress(return_value, &result_len, decoded_data, header[3]); + *decompressed_length=result_len; free(decoded_data); free(header); return (char *)return_value; -- Gitblit v1.9.3