Author: eadler
Date: Fri Jan 26 03:30:05 2018
New Revision: 328427
URL: https://svnweb.freebsd.org/changeset/base/328427

Log:
  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

Modified:
  head/bin/dd/dd.c

Modified: head/bin/dd/dd.c
==============================================================================
--- head/bin/dd/dd.c    Fri Jan 26 00:58:32 2018        (r328426)
+++ head/bin/dd/dd.c    Fri Jan 26 03:30:05 2018        (r328427)
@@ -339,6 +339,21 @@ speed_limit(void)
 }
 
 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)
 {
        ssize_t n;
@@ -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;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to