aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-12-22 19:19:56 +1300
committerTom Ryder <tom@sanctum.geek.nz>2019-12-22 19:23:25 +1300
commit5fb185fecc64806a772c2ad3956ecc903c508e0c (patch)
tree9c045b6974bc318a3f138d83531469e2c7f674d3
parentMerge branch 'release/v1.2.0' (diff)
downloadwtf8-5fb185fecc64806a772c2ad3956ecc903c508e0c.tar.gz
wtf8-5fb185fecc64806a772c2ad3956ecc903c508e0c.zip
Bounds checking on character byte walk
-rw-r--r--wtf8.c4
-rw-r--r--wtf8.h1
2 files changed, 3 insertions, 2 deletions
diff --git a/wtf8.c b/wtf8.c
index e277d1a..714a7cc 100644
--- a/wtf8.c
+++ b/wtf8.c
@@ -35,7 +35,7 @@ void print_characters(char *s) {
/*
* We need a short counter to find how long each character is
*/
- int c;
+ unsigned char c;
/*
* Iterate through the string
@@ -46,7 +46,7 @@ void print_characters(char *s) {
* Print blanks and increment a counter until we find how long this
* character is
*/
- for (c = 1; is_utf8_cont(s[c]); c++)
+ for (c = 1; is_utf8_cont(s[c]) && c <= UCHAR_MAX; c++)
printf(" ");
/*
diff --git a/wtf8.h b/wtf8.h
index 5a80f30..a635e1e 100644
--- a/wtf8.h
+++ b/wtf8.h
@@ -1,3 +1,4 @@
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>