Add some sanity checks. bug 336410, r=igor

This commit is contained in:
mrbkap%gmail.com 2006-06-15 03:26:21 +00:00
Родитель 8306f1b819
Коммит a9b2667c51
1 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -521,8 +521,17 @@ array_join_sub(JSContext *cx, JSObject *obj, enum ArrayToStringOp op,
got_str:
/* Allocate 1 at end for closing bracket and zero. */
growth = (nchars + JSSTRING_LENGTH(str) + seplen + extratail)
* sizeof(jschar);
tmplen = JSSTRING_LENGTH(str);
growth = nchars + tmplen + seplen + extratail;
if (nchars > growth || tmplen > growth ||
growth > (size_t)-1 / sizeof(jschar)) {
if (chars) {
free(chars);
chars = NULL;
}
goto done;
}
growth *= sizeof(jschar);
if (!chars) {
chars = (jschar *) malloc(growth);
if (!chars)
@ -535,7 +544,6 @@ array_join_sub(JSContext *cx, JSObject *obj, enum ArrayToStringOp op,
}
}
tmplen = JSSTRING_LENGTH(str);
js_strncpy(&chars[nchars], JSSTRING_CHARS(str), tmplen);
nchars += tmplen;