From 208ebf209906482b7a18adf11c186263d7db3b7c Mon Sep 17 00:00:00 2001 From: eadler Date: Fri, 26 Jan 2018 03:30:05 +0000 Subject: dd(1): Use a local swapbytes() function. swab(3) has restrict qualifiers for src and dst. Avoid relying on undefined overlapping swab behavior. Obtained From: OpenBSD --- cpukit/libmisc/shell/main_dd.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'cpukit/libmisc') diff --git a/cpukit/libmisc/shell/main_dd.c b/cpukit/libmisc/shell/main_dd.c index 1a715303ef..35cd826711 100644 --- a/cpukit/libmisc/shell/main_dd.c +++ b/cpukit/libmisc/shell/main_dd.c @@ -334,6 +334,21 @@ getfdtype(rtems_shell_dd_globals* globals, IO *io) io->flags |= ISSEEK; } +static void +swapbytes(void *v, size_t len) +{ + unsigned char *p = v; + unsigned char t; + + while (len > 1) { + t = p[0]; + p[0] = p[1]; + p[1] = t; + p += 2; + len -= 2; + } +} + static void dd_in(rtems_shell_dd_globals* globals) { @@ -431,7 +446,7 @@ dd_in(rtems_shell_dd_globals* globals) ++st.swab; --n; } - swab(in.dbp, in.dbp, (size_t)n); + swapbytes(in.dbp, (size_t)n); } in.dbp += in.dbrcnt; -- cgit v1.2.3