aboutsummaryrefslogtreecommitdiffstats
path: root/Str.c
diff options
context:
space:
mode:
authorTatsuya Kinoshita <tats@debian.org>2021-03-04 13:18:03 +0000
committerTatsuya Kinoshita <tats@debian.org>2021-03-04 13:18:03 +0000
commite11bb2b868940d9390510b8b7bbd482f74f4baa7 (patch)
treed5b68d6432b1b21662b79fc38ca851efbedc8b99 /Str.c
parentUpdate ChangeLog (diff)
downloadw3m-e11bb2b868940d9390510b8b7bbd482f74f4baa7.tar.gz
w3m-e11bb2b868940d9390510b8b7bbd482f74f4baa7.zip
Consider Strgrow overflow in Strinsert_char
Diffstat (limited to 'Str.c')
-rw-r--r--Str.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Str.c b/Str.c
index ab8e4bd..b4f1360 100644
--- a/Str.c
+++ b/Str.c
@@ -348,10 +348,12 @@ Strinsert_char(Str s, int pos, char c)
{
int i;
STR_LENGTH_CHECK(s);
- if (pos < 0 || s->length < pos)
+ if (pos < 0)
return;
if (s->length + 2 > s->area_size)
Strgrow(s);
+ if (s->length < pos)
+ return;
for (i = s->length; i > pos; i--)
s->ptr[i] = s->ptr[i - 1];
s->ptr[++s->length] = '\0';