diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-05-04 15:32:52 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-05-04 22:22:48 +0200 |
commit | 2b975a449c17268f943403176a7609079b7af084 (patch) | |
tree | fee51e2f4b4f424c9a55dc35fb7aad21e3ce6580 /include | |
parent | 6f7ee71165b30272a4f18bca361c324c7671680c (diff) |
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 <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r-- | include/compress.h | 3 | ||||
-rw-r--r-- | include/meta_reader.h | 1 | ||||
-rw-r--r-- | include/meta_writer.h | 3 |
3 files changed, 5 insertions, 2 deletions
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); |