Skip to content

Commit 686979a

Browse files
mwilliams@fb.comOrvid
mwilliams@fb.com
authored andcommitted
Fix integer overflow in StringUtil::implode
Reviewed By: ricklavoie Differential Revision: D3623922 fbshipit-source-id: 136d124a850c07cc6c63535afc11d36499d576fc
1 parent a7cc248 commit 686979a

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

hphp/runtime/base/string-util.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ String StringUtil::Implode(const Variant& items, const String& delim,
123123
if (size == 0) return empty_string();
124124

125125
String* sitems = (String*)req::malloc(size * sizeof(String));
126-
int len = 0;
127-
int lenDelim = delim.size();
128-
int i = 0;
126+
size_t len = 0;
127+
size_t lenDelim = delim.size();
128+
size_t i = 0;
129129
for (ArrayIter iter(items); iter; ++iter) {
130130
new (&sitems[i]) String(iter.second().toString());
131131
len += sitems[i].size() + lenDelim;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
$stringLarge = str_repeat('*', 300289);
4+
$arrayLarge = array_fill(0, 49981, '*');
5+
$string_implode_2 = implode($stringLarge, $arrayLarge);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
Fatal error: String length exceeded 2^31-2: 15008494201 in %s/test/slow/string_length_overflow/implode.php on line 5

0 commit comments

Comments
 (0)