From 2b975a449c17268f943403176a7609079b7af084 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sat, 4 May 2019 15:32:52 +0200 Subject: Remove compressor internal buffers Pass in an external destination buffer + size and allow for propper bounds checking (especially when unpacking). Signed-off-by: David Oberhollenzer --- include/compress.h | 3 ++- include/meta_reader.h | 1 + include/meta_writer.h | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/compress.h b/include/compress.h index d527307..ad193e8 100644 --- a/include/compress.h +++ b/include/compress.h @@ -12,7 +12,8 @@ typedef struct compressor_t compressor_t; struct compressor_t { - ssize_t (*do_block)(compressor_t *cmp, uint8_t *block, size_t outsize); + ssize_t (*do_block)(compressor_t *cmp, const uint8_t *in, size_t size, + uint8_t *out, size_t outsize); void (*destroy)(compressor_t *stream); }; diff --git a/include/meta_reader.h b/include/meta_reader.h index 1fb527a..3085383 100644 --- a/include/meta_reader.h +++ b/include/meta_reader.h @@ -12,6 +12,7 @@ typedef struct { int fd; compressor_t *cmp; uint8_t data[SQFS_META_BLOCK_SIZE]; + uint8_t scratch[SQFS_META_BLOCK_SIZE]; } meta_reader_t; meta_reader_t *meta_reader_create(int fd, compressor_t *cmp); diff --git a/include/meta_writer.h b/include/meta_writer.h index 03f9a2e..7f1be9a 100644 --- a/include/meta_writer.h +++ b/include/meta_writer.h @@ -6,11 +6,12 @@ #include "squashfs.h" typedef struct { - uint8_t data[SQFS_META_BLOCK_SIZE + 2]; size_t offset; size_t block_offset; int outfd; compressor_t *cmp; + uint8_t data[SQFS_META_BLOCK_SIZE + 2]; + uint8_t scratch[SQFS_META_BLOCK_SIZE + 2]; } meta_writer_t; meta_writer_t *meta_writer_create(int fd, compressor_t *cmp); -- cgit v1.2.3