diff options
author | Fabian Groffen <grobian@gentoo.org> | 2019-11-17 15:22:11 +0100 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2019-11-17 15:22:11 +0100 |
commit | ff143361fe3b5eb7befefea5ab45440a6b8716db (patch) | |
tree | c3887665e66132d5f179f5a100d9f0bb824b9fc7 /main.h | |
parent | libq/xpak: try to seek to XPAKSTART in _xpak_open (diff) | |
download | portage-utils-ff143361fe3b5eb7befefea5ab45440a6b8716db.tar.gz portage-utils-ff143361fe3b5eb7befefea5ab45440a6b8716db.tar.bz2 portage-utils-ff143361fe3b5eb7befefea5ab45440a6b8716db.zip |
main: ensure READ/WRITE_BE_INT32 operate on the expected bytes
we want to work on unsigned bytes such that we don't get sudden
unintended operations due to negative value handling
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Diffstat (limited to 'main.h')
-rw-r--r-- | main.h | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -56,13 +56,16 @@ extern const char *argv0; #endif #define READ_BE_INT32(P) \ - (((P)[0] << 24) | ((P)[1] << 16) | ((P)[2] << 8 ) | (P)[3]) + ((((unsigned char *)(P))[0] << 24) | \ + (((unsigned char *)(P))[1] << 16) | \ + (((unsigned char *)(P))[2] << 8 ) | \ + (((unsigned char *)(P))[3])) #define WRITE_BE_INT32(P,I) \ { \ - (P)[0] = (I & 0xff000000) >> 24; \ - (P)[1] = (I & 0x00ff0000) >> 16; \ - (P)[2] = (I & 0x0000ff00) >> 8; \ - (P)[3] = (I & 0x000000ff); \ + ((unsigned char *)(P))[0] = (I & 0xff000000) >> 24; \ + ((unsigned char *)(P))[1] = (I & 0x00ff0000) >> 16; \ + ((unsigned char *)(P))[2] = (I & 0x0000ff00) >> 8; \ + ((unsigned char *)(P))[3] = (I & 0x000000ff); \ } /* Easy enough to glue to older versions */ |