diff options
author | Timo Teräs <timo.teras@iki.fi> | 2020-02-21 09:31:21 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2020-02-21 09:33:58 +0200 |
commit | c054fbc11e9beca0d45285c3e1f448c81416c5ce (patch) | |
tree | 8884f1f2de291958f9c64d4536e052898ce2cded /src/apk_defines.h | |
parent | 271047cc930150a2972573625124b0c097ad322a (diff) | |
download | apk-tools-c054fbc11e9beca0d45285c3e1f448c81416c5ce.tar.gz apk-tools-c054fbc11e9beca0d45285c3e1f448c81416c5ce.tar.bz2 apk-tools-c054fbc11e9beca0d45285c3e1f448c81416c5ce.tar.xz apk-tools-c054fbc11e9beca0d45285c3e1f448c81416c5ce.zip |
db: fix unaligned memory access in csum_hash()
Diffstat (limited to 'src/apk_defines.h')
-rw-r--r-- | src/apk_defines.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/apk_defines.h b/src/apk_defines.h index 5373725..00e9ea8 100644 --- a/src/apk_defines.h +++ b/src/apk_defines.h @@ -149,6 +149,16 @@ static inline size_t mulmod(size_t a, size_t b, size_t c) return (size_t) tmp; } +static inline uint32_t get_unaligned32(const void *ptr) +{ +#if defined(__x86_64__) || defined(__i386__) + return *(const uint32_t *)ptr; +#else + const uint8_t *p = ptr; + return p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24; +#endif +} + typedef void (*apk_progress_cb)(void *cb_ctx, size_t); void *apk_array_resize(void *array, size_t new_size, size_t elem_size); |