diff options
author | millert <> | 2004-01-20 06:06:48 +0000 |
---|---|---|
committer | millert <> | 2004-01-20 06:06:48 +0000 |
commit | 3a9bdfad7b4583f085b2e8157df7796839aa8ae2 (patch) | |
tree | fae5a287c7e20c5aba1d422e6b948b26519a07a7 | |
parent | 1d7384540d665cdb91806c51a5b917ad6e152388 (diff) | |
download | openbsd-3a9bdfad7b4583f085b2e8157df7796839aa8ae2.tar.gz openbsd-3a9bdfad7b4583f085b2e8157df7796839aa8ae2.tar.bz2 openbsd-3a9bdfad7b4583f085b2e8157df7796839aa8ae2.zip |
Fix the example code. The loop invariant 'i' was not bound by MAXTOKENS
which could result in writing a NUL byte outside of tokens[]. A fix, from
Patrick Latifi, is to move the increment into the "i < MAXTOKENS - 1" block.
-rw-r--r-- | src/lib/libc/string/strtok.3 | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/libc/string/strtok.3 b/src/lib/libc/string/strtok.3 index bdf28f68f6..29eea4847e 100644 --- a/src/lib/libc/string/strtok.3 +++ b/src/lib/libc/string/strtok.3 | |||
@@ -29,7 +29,7 @@ | |||
29 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 29 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
30 | .\" SUCH DAMAGE. | 30 | .\" SUCH DAMAGE. |
31 | .\" | 31 | .\" |
32 | .\" $OpenBSD: strtok.3,v 1.16 2003/06/02 20:18:38 millert Exp $ | 32 | .\" $OpenBSD: strtok.3,v 1.17 2004/01/20 06:06:48 millert Exp $ |
33 | .\" | 33 | .\" |
34 | .Dd June 29, 1991 | 34 | .Dd June 29, 1991 |
35 | .Dt STRTOK 3 | 35 | .Dt STRTOK 3 |
@@ -104,9 +104,9 @@ int i = 0; | |||
104 | snprintf(s, sizeof(s), "cat dog horse cow"); | 104 | snprintf(s, sizeof(s), "cat dog horse cow"); |
105 | 105 | ||
106 | for ((p = strtok_r(s, " ", &last)); p; | 106 | for ((p = strtok_r(s, " ", &last)); p; |
107 | (p = strtok_r(NULL, " ", &last)), i++) { | 107 | (p = strtok_r(NULL, " ", &last))) { |
108 | if (i < MAXTOKENS - 1) | 108 | if (i < MAXTOKENS - 1) |
109 | tokens[i] = p; | 109 | tokens[i++] = p; |
110 | } | 110 | } |
111 | tokens[i] = NULL; | 111 | tokens[i] = NULL; |
112 | .Ed | 112 | .Ed |