From b6e0f2e1c32930b10403d26d39e71225573bcba9 Mon Sep 17 00:00:00 2001
From: David Brownell <dbrownell@users.sourceforge.net>
Date: Mon, 16 Nov 2009 14:50:07 -0800
Subject: binarybuffer: regression fix

The "improve inline binarybuffer helpers" mis-handled bytes
with the high bit set; treat them as unsigned, not signed.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
---
 src/helper/binarybuffer.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/helper/binarybuffer.h b/src/helper/binarybuffer.h
index 460d0178..6275eaf1 100644
--- a/src/helper/binarybuffer.h
+++ b/src/helper/binarybuffer.h
@@ -41,7 +41,8 @@
 static inline void buf_set_u32(void *_buffer,
 		unsigned first, unsigned num, uint32_t value)
 {
-	char *buffer = (char *)_buffer;
+	uint8_t *buffer = (uint8_t *)_buffer;
+
 	if ((num == 32) && (first == 0)) {
 		buffer[3] = (value >> 24) & 0xff;
 		buffer[2] = (value >> 16) & 0xff;
@@ -69,7 +70,8 @@ static inline void buf_set_u32(void *_buffer,
 static inline uint32_t buf_get_u32(const void *_buffer,
 		unsigned first, unsigned num)
 {
-	char *buffer = (char *)_buffer;
+	uint8_t *buffer = (uint8_t *)_buffer;
+
 	if ((num == 32) && (first == 0)) {
 		return (((uint32_t)buffer[3]) << 24) |
 			(((uint32_t)buffer[2]) << 16) |
-- 
cgit v1.2.3