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
This commit is contained in:
eadler 2018-01-26 03:30:05 +00:00
parent f5e73a2c14
commit aa1c7df3e3

View File

@ -338,6 +338,21 @@ speed_limit(void)
t_prev = t_now;
}
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(void)
{
@ -438,7 +453,7 @@ dd_in(void)
++st.swab;
--n;
}
swab(in.dbp, in.dbp, (size_t)n);
swapbytes(in.dbp, (size_t)n);
}
in.dbp += in.dbrcnt;