From 4f5ffcfd5ba38b6b7dd6d3b15de8bb8677537b9f Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Thu, 09 Apr 2020 16:15:56 +0000
Subject: [PATCH] Commiting old changes

---
 src/b64zlib_compression.c |   34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/b64zlib_compression.c b/src/b64zlib_compression.c
index 09ed942..013897e 100644
--- a/src/b64zlib_compression.c
+++ b/src/b64zlib_compression.c
@@ -78,7 +78,6 @@
 	free(compr);
 
 	ts_uint header[4]={1, data_len, data_len, number_of_compressed_bytes};
-	fprintf(stderr,"Header before encoding: %d, %d, %d, %d\n", header[0],header[1],header[2], header[3]);
 	char *encoded_header=(char *)base64_encode((unsigned char *)header, 4*sizeof(ts_uint), &nbase2);
 	char *return_value=malloc((nbase1+nbase2+1)*sizeof(char));
 	strncpy(return_value,encoded_header,nbase2);
@@ -89,22 +88,29 @@
 	free(encoded_header);
 
 	//test decoding and decompression
-	char *test_data = ts_decompress((unsigned char *)return_value, nbase1+nbase2, data_len);
-	free(test_data);
-	fprintf(stderr,"WAS HERE!\n");
+	//char *test_data = ts_decompress((unsigned char *)return_value, nbase1+nbase2, data_len);
+	//for(int i=0;i<data_len;i++){
+	//	if(data[i]!=test_data[i]){
+	//		fprintf(stderr,"(DE)COMPRESSION ERROR!\n");
+	//	}
+	//}
+	//free(test_data);
 	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]);
+	//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;
@@ -123,7 +129,6 @@
                                 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
                                 'w', 'x', 'y', 'z', '0', '1', '2', '3',
                                 '4', '5', '6', '7', '8', '9', '+', '/'};
-static char *decoding_table = NULL;
 static int mod_table[] = {0, 2, 1};
 
 
@@ -155,7 +160,7 @@
 
 unsigned char *base64_decode(const char *data, size_t input_length, size_t *output_length) {
 	int i,j;
-	if (decoding_table == NULL) build_decoding_table();
+	char *decoding_table = build_decoding_table();
 
 	if (input_length % 4 != 0) return NULL;
 
@@ -181,23 +186,20 @@
        	if (j < *output_length) decoded_data[j++] = (triple >> 1 * 8) & 0xFF;
        	if (j < *output_length) decoded_data[j++] = (triple >> 0 * 8) & 0xFF;
     }
-	if(decoding_table !=NULL) free(decoding_table);
+	free(decoding_table);
     return decoded_data;
 }
 
 
-void build_decoding_table() {
-
-    decoding_table = malloc(256);
+char *build_decoding_table() {
+    char *decoding_table = malloc(256);
 	int i;
     for (i = 0; i < 64; i++)
 		decoding_table[(unsigned char) encoding_table[i]] = i;
+	return decoding_table;
 }
 
 
-void base64_cleanup() {
-    free(decoding_table);
-}
 
 
 

--
Gitblit v1.9.3