diff options
author | Paul Fertser <fercerpav@gmail.com> | 2015-01-17 15:15:11 +0300 |
---|---|---|
committer | Paul Fertser <fercerpav@gmail.com> | 2015-01-30 08:56:54 +0000 |
commit | 355f4cadbbf10c75cf05fb1a82bf918b3ab65c55 (patch) | |
tree | f874ce4af77346c82220be72f217b2b311cff380 /src/helper | |
parent | 9d745a0690f6f5c24d914ebfa3c1d6b824a19a5e (diff) |
Use (uint8_t *) for buf_(set|get)_u(32|64) instead of (void *)
This helps to uncover incorrect usage when a pointer to uint32_t is
passed to those functions which leads to subtle bugs on BE systems.
The reason is that it's normally assumed that any uint32_t variable
holds its value in host byte order, but using but_set_u32 on it
silently does implicit pointer conversion to (void *) and the
assumption ends up broken without any indication.
Change-Id: I48ffd190583d8aa32ec1fef8f1cdc0b4184e4546
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2467
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/binarybuffer.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/helper/binarybuffer.h b/src/helper/binarybuffer.h index 9c20bcd5..eaa8c526 100644 --- a/src/helper/binarybuffer.h +++ b/src/helper/binarybuffer.h @@ -39,7 +39,7 @@ * @param num The number of bits from @c value to copy (1-32). * @param value Up to 32 bits that will be copied to _buffer. */ -static inline void buf_set_u32(void *_buffer, +static inline void buf_set_u32(uint8_t *_buffer, unsigned first, unsigned num, uint32_t value) { uint8_t *buffer = _buffer; @@ -68,7 +68,7 @@ static inline void buf_set_u32(void *_buffer, * @param num The number of bits from @c value to copy (1-64). * @param value Up to 64 bits that will be copied to _buffer. */ -static inline void buf_set_u64(void *_buffer, +static inline void buf_set_u64(uint8_t *_buffer, unsigned first, unsigned num, uint64_t value) { uint8_t *buffer = _buffer; @@ -106,7 +106,7 @@ static inline void buf_set_u64(void *_buffer, * @param num The number of bits from @c _buffer to read (1-32). * @returns Up to 32-bits that were read from @c _buffer. */ -static inline uint32_t buf_get_u32(const void *_buffer, +static inline uint32_t buf_get_u32(const uint8_t *_buffer, unsigned first, unsigned num) { const uint8_t *buffer = _buffer; @@ -135,7 +135,7 @@ static inline uint32_t buf_get_u32(const void *_buffer, * @param num The number of bits from @c _buffer to read (1-64). * @returns Up to 64-bits that were read from @c _buffer. */ -static inline uint64_t buf_get_u64(const void *_buffer, +static inline uint64_t buf_get_u64(const uint8_t *_buffer, unsigned first, unsigned num) { const uint8_t *buffer = _buffer; |