mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-23 14:40:51 +01:00
Idiot-proof uncompress; make sure it always nul-terminates its output. Also, make all compression methods nonzero.
svn:r2334
This commit is contained in:
parent
6b9e27f037
commit
b6798866d0
2 changed files with 6 additions and 3 deletions
|
@ -10,7 +10,6 @@
|
|||
|
||||
#include "orconfig.h"
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
@ -74,7 +73,6 @@ tor_gzip_compress(char **out, size_t *out_len,
|
|||
if (deflateInit2(stream, Z_BEST_COMPRESSION, Z_DEFLATED,
|
||||
method_bits(method),
|
||||
8, Z_DEFAULT_STRATEGY) != Z_OK) {
|
||||
printf("Z");
|
||||
log_fn(LOG_WARN, "Error from deflateInit2: %s",
|
||||
stream->msg?stream->msg:"<no message>");
|
||||
goto err;
|
||||
|
@ -200,6 +198,11 @@ tor_gzip_uncompress(char **out, size_t *out_len,
|
|||
}
|
||||
tor_free(stream);
|
||||
|
||||
/* NUL-terminate output. */
|
||||
if (out_size == *out_len)
|
||||
*out = tor_realloc(*out, out_size + 1);
|
||||
(*out)[*out_len] = '\0';
|
||||
|
||||
return 0;
|
||||
err:
|
||||
if (stream) {
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#ifndef __TORGZIP_H
|
||||
#define __TORGZIP_H
|
||||
|
||||
typedef enum { GZIP_METHOD, ZLIB_METHOD } compress_method_t;
|
||||
typedef enum { GZIP_METHOD=1, ZLIB_METHOD=2 } compress_method_t;
|
||||
|
||||
int
|
||||
tor_gzip_compress(char **out, size_t *out_len,
|
||||
|
|
Loading…
Add table
Reference in a new issue