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:
Eitan Adler 2018-01-26 03:30:05 +00:00
parent dffce2150e
commit 44e0a832f2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328427

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;