summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormillert <>2004-01-20 06:06:48 +0000
committermillert <>2004-01-20 06:06:48 +0000
commit3a9bdfad7b4583f085b2e8157df7796839aa8ae2 (patch)
treefae5a287c7e20c5aba1d422e6b948b26519a07a7
parent1d7384540d665cdb91806c51a5b917ad6e152388 (diff)
downloadopenbsd-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.36
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;
104snprintf(s, sizeof(s), "cat dog horse cow"); 104snprintf(s, sizeof(s), "cat dog horse cow");
105 105
106for ((p = strtok_r(s, " ", &last)); p; 106for ((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}
111tokens[i] = NULL; 111tokens[i] = NULL;
112.Ed 112.Ed