Oops - my patch contained a bug (though it worked on my machine).
Here is a corrected patch for /usr/src/usr.bin/wc/wc.c

diff -r a60ac28f79ee wc.c
--- a/wc.c      Wed Sep 26 17:49:53 2018 +0100
+++ b/wc.c      Thu Sep 27 16:16:02 2018 +0100
@@ -208,7 +208,8 @@
                gotsp = 1;
                while ((len = getline(&buf, &bufsz, stream)) > 0) {
                        if (multibyte) {
-                               for (C = buf; *C != '\0'; C += len) {
+                               const char *end = buf + len;
+                               for (C = buf; C < end; C += len) {
                                        ++charct;
                                        len = mbtowc(&wc, C, MB_CUR_MAX);
                                        if (len == -1) {
@@ -228,7 +229,7 @@
                                }
                        } else {
                                charct += len;
-                               for (C = buf; *C != '\0'; ++C) {
+                               for (C = buf; len--; ++C) {
                                        if (isspace((unsigned char)*C)) {
                                                gotsp = 1;
                                                if (*C == '\n')

Reply via email to