They have different size on 32 bit, so they are really not interchangable.
DEFINE_STRING_TABLE_LOOKUP(object_compressed, int);
-int compress_blob_xz(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size) {
+int compress_blob_xz(const void *src, uint64_t src_size, void *dst, size_t *dst_size) {
#ifdef HAVE_XZ
static const lzma_options_lzma opt = {
1u << 20u, NULL, 0, LZMA_LC_DEFAULT, LZMA_LP_DEFAULT,
#endif
}
-int compress_blob_lz4(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size) {
+int compress_blob_lz4(const void *src, uint64_t src_size, void *dst, size_t *dst_size) {
#ifdef HAVE_LZ4
int r;
int decompress_blob_xz(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max) {
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max) {
#ifdef HAVE_XZ
_cleanup_(lzma_end) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret;
- uint64_t space;
+ size_t space;
assert(src);
assert(src_size > 0);
if (ret != LZMA_OK)
return -ENOMEM;
- space = MIN(src_size * 2, dst_max ?: (uint64_t) -1);
+ space = MIN(src_size * 2, dst_max ?: (size_t) -1);
if (!greedy_realloc(dst, dst_alloc_size, space, 1))
return -ENOMEM;
s.avail_out = space;
for (;;) {
- uint64_t used;
+ size_t used;
ret = lzma_code(&s, LZMA_FINISH);
return -ENOBUFS;
used = space - s.avail_out;
- space = MIN(2 * space, dst_max ?: (uint64_t) -1);
+ space = MIN(2 * space, dst_max ?: (size_t) -1);
if (!greedy_realloc(dst, dst_alloc_size, space, 1))
return -ENOMEM;
}
int decompress_blob_lz4(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max) {
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max) {
#ifdef HAVE_LZ4
char* out;
- uint64_t size;
- int r;
+ int r, size; /* LZ4 uses int for size */
assert(src);
assert(src_size > 0);
return -EBADMSG;
size = le64toh( *(le64_t*)src );
- if (size > *dst_alloc_size) {
+ if (size < 0 || (le64_t) size != *(le64_t*)src)
+ return -EFBIG;
+ if ((size_t) size > *dst_alloc_size) {
out = realloc(*dst, size);
if (!out)
return -ENOMEM;
out = *dst;
r = LZ4_decompress_safe(src + 8, out, src_size - 8, size);
- if (r < 0 || (uint64_t) r != size)
+ if (r < 0 || r != size)
return -EBADMSG;
*dst_size = size;
int decompress_blob(int compression,
const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max) {
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max) {
if (compression == OBJECT_COMPRESSED_XZ)
return decompress_blob_xz(src, src_size,
dst, dst_alloc_size, dst_size, dst_max);
int decompress_startswith_xz(const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra) {
#ifdef HAVE_XZ
}
int decompress_startswith_lz4(const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra) {
#ifdef HAVE_LZ4
/* Checks whether the decompressed blob starts with the
int decompress_startswith(int compression,
const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra) {
if (compression == OBJECT_COMPRESSED_XZ)
return decompress_startswith_xz(src, src_size,
return errno ? -errno : -EIO;
if (ret == LZMA_STREAM_END) {
- log_debug("XZ compression finished (%zu -> %zu bytes, %.1f%%)",
+ log_debug("XZ compression finished (%"PRIu64" -> %"PRIu64" bytes, %.1f%%)",
s.total_in, s.total_out,
(double) s.total_out / s.total_in * 100);
return errno ? -errno : -EIO;
if (ret == LZMA_STREAM_END) {
- log_debug("XZ decompression finished (%zu -> %zu bytes, %.1f%%)",
+ log_debug("XZ decompression finished (%"PRIu64" -> %"PRIu64" bytes, %.1f%%)",
s.total_in, s.total_out,
(double) s.total_out / s.total_in * 100);
const char* object_compressed_to_string(int compression);
int object_compressed_from_string(const char *compression);
-int compress_blob_xz(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size);
-int compress_blob_lz4(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size);
+int compress_blob_xz(const void *src, uint64_t src_size, void *dst, size_t *dst_size);
+int compress_blob_lz4(const void *src, uint64_t src_size, void *dst, size_t *dst_size);
-static inline int compress_blob(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size) {
+static inline int compress_blob(const void *src, uint64_t src_size, void *dst, size_t *dst_size) {
int r;
#ifdef HAVE_LZ4
r = compress_blob_lz4(src, src_size, dst, dst_size);
}
int decompress_blob_xz(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max);
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
int decompress_blob_lz4(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max);
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
int decompress_blob(int compression,
const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max);
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
int decompress_startswith_xz(const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra);
int decompress_startswith_lz4(const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra);
int decompress_startswith(int compression,
const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra);
int compress_stream_xz(int fdf, int fdt, off_t max_bytes);
if (o->object.flags & OBJECT_COMPRESSION_MASK) {
#if defined(HAVE_XZ) || defined(HAVE_LZ4)
- uint64_t l, rsize;
+ uint64_t l;
+ size_t rsize;
l = le64toh(o->object.size);
if (l <= offsetof(Object, data.payload))
#if defined(HAVE_XZ) || defined(HAVE_LZ4)
if (f->compress_xz &&
size >= COMPRESSION_SIZE_THRESHOLD) {
- uint64_t rsize;
+ size_t rsize;
compression = compress_blob(data, size, o->data.payload, &rsize);
o->object.size = htole64(offsetof(Object, data.payload) + rsize);
o->object.flags |= compression;
- log_debug("Compressed data object %"PRIu64" -> %"PRIu64" using %s",
+ log_debug("Compressed data object %"PRIu64" -> %zu using %s",
size, rsize, object_compressed_to_string(compression));
}
}
if (o->object.flags & OBJECT_COMPRESSION_MASK) {
#if defined(HAVE_XZ) || defined(HAVE_LZ4)
- uint64_t rsize;
+ size_t rsize;
r = decompress_blob(o->object.flags & OBJECT_COMPRESSION_MASK,
o->data.payload, l, &from->compress_buffer, &from->compress_buffer_size, &rsize, 0);
#ifdef HAVE_XZ
void *compress_buffer;
- uint64_t compress_buffer_size;
+ size_t compress_buffer_size;
#endif
#ifdef HAVE_GCRYPT
compression = o->object.flags & OBJECT_COMPRESSION_MASK;
if (compression) {
_cleanup_free_ void *b = NULL;
- uint64_t alloc = 0, b_size;
+ size_t alloc = 0, b_size;
r = decompress_blob(compression,
o->data.payload,
l = le64toh(l_le);
if (l > DATA_SIZE_MAX) {
- log_debug("Received binary data block of %zu bytes is too large, ignoring.", l);
+ log_debug("Received binary data block of %"PRIu64" bytes is too large, ignoring.", l);
break;
}
&f->compress_buffer, &f->compress_buffer_size,
field, field_length, '=')) {
- uint64_t rsize;
+ size_t rsize;
r = decompress_blob(compression,
o->data.payload, l,
compression = o->object.flags & OBJECT_COMPRESSION_MASK;
if (compression) {
#if defined(HAVE_XZ) || defined(HAVE_LZ4)
- uint64_t rsize;
+ size_t rsize;
int r;
r = decompress_blob(compression,
#include "util.h"
#include "macro.h"
-typedef int (compress_t)(const void *src, uint64_t src_size, void *dst, uint64_t *dst_size);
+typedef int (compress_t)(const void *src, uint64_t src_size, void *dst, size_t *dst_size);
typedef int (decompress_t)(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, uint64_t dst_max);
+ void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
#define MAX_SIZE (1024*1024LU)
_cleanup_free_ char *text, *buf;
_cleanup_free_ void *buf2 = NULL;
- uint64_t buf2_allocated = 0;
+ size_t buf2_allocated = 0;
size_t skipped = 0, compressed = 0, total = 0;
text = make_buf(MAX_SIZE);
n = now(CLOCK_MONOTONIC);
for (size_t i = 1; i <= MAX_SIZE; i += (i < 2048 ? 1 : 217)) {
- uint64_t j = 0, k = 0;
+ size_t j = 0, k = 0;
int r;
r = compress(text, i, buf, &j);
assert(j > 0);
if (j >= i)
- log_error("%s \"compressed\" %zu -> %" PRIu64, label, i, j);
+ log_error("%s \"compressed\" %zu -> %zu", label, i, j);
r = decompress(buf, j, &buf2, &buf2_allocated, &k, 0);
assert(r == 0);
#endif
typedef int (compress_blob_t)(const void *src, uint64_t src_size,
- void *dst, uint64_t *dst_size);
+ void *dst, size_t *dst_size);
typedef int (decompress_blob_t)(const void *src, uint64_t src_size,
- void **dst, uint64_t *dst_alloc_size,
- uint64_t* dst_size, uint64_t dst_max);
-
+ void **dst, size_t *dst_alloc_size,
+ size_t* dst_size, size_t dst_max);
typedef int (decompress_sw_t)(const void *src, uint64_t src_size,
- void **buffer, uint64_t *buffer_size,
- const void *prefix, uint64_t prefix_len,
+ void **buffer, size_t *buffer_size,
+ const void *prefix, size_t prefix_len,
uint8_t extra);
typedef int (compress_stream_t)(int fdf, int fdt, off_t max_bytes);
char text[] = "foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF"
"foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF";
char compressed[512];
- uint64_t csize = 512;
- uint64_t usize = 0;
+ size_t csize = 512;
+ size_t usize = 0;
_cleanup_free_ char *decompressed = NULL;
int r;
char text[] = "foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF"
"foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF";
char compressed[512];
- uint64_t csize = 512;
- uint64_t usize = 0;
+ size_t csize = 512;
+ size_t usize = 0;
_cleanup_free_ char *decompressed = NULL;
log_info("/* testing decompress_startswith with %s */",
udev_dbg(udev, "=== trie on-disk ===\n");
udev_dbg(udev, "tool version: %"PRIu64, le64toh(hwdb->head->tool_version));
- udev_dbg(udev, "file size: %8zu bytes\n", hwdb->st.st_size);
+ udev_dbg(udev, "file size: %8"PRIu64" bytes\n", hwdb->st.st_size);
udev_dbg(udev, "header size %8"PRIu64" bytes\n", le64toh(hwdb->head->header_size));
udev_dbg(udev, "strings %8"PRIu64" bytes\n", le64toh(hwdb->head->strings_len));
udev_dbg(udev, "nodes %8"PRIu64" bytes\n", le64toh(hwdb->head->nodes_len));