[git commit] hexdump: fix regression for uint16 on big endian systems
Denys Vlasenko
vda.linux at googlemail.com
Tue Jul 1 11:31:45 UTC 2025
commit: https://git.busybox.net/busybox/commit/?id=f5c7cae55fc3e19d074198bc12152486067ea8c7
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Commit 34751d8bf introduced a bug in the handling of uint16
values on big endian systems not considered safe for unaligned
access when falling back to memcpy.
Signed-off-by: Radoslav Kolev <radoslav.kolev at suse.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
libbb/dump.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/libbb/dump.c b/libbb/dump.c
index 2ca9919da..ac5d47d9e 100644
--- a/libbb/dump.c
+++ b/libbb/dump.c
@@ -667,15 +667,21 @@ static NOINLINE void display(priv_dumper_t* dumper)
conv_u(pr, bp);
break;
case F_UINT: {
+ union {
+ uint16_t uval16;
+ uint32_t uval32;
+ } u;
unsigned value = (unsigned char)*bp;
switch (pr->bcnt) {
case 1:
break;
case 2:
- move_from_unaligned16(value, bp);
+ move_from_unaligned16(u.uval16, bp);
+ value = u.uval16;
break;
case 4:
- move_from_unaligned32(value, bp);
+ move_from_unaligned32(u.uval32, bp);
+ value = u.uval32;
break;
/* case 8: no users yet */
}
More information about the busybox-cvs
mailing list