瀏覽代碼

v8js_v8: add size check + precission down cast

Stefan Siegl 8 年之前
父節點
當前提交
ab8613f41b
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      v8js_v8.cc

+ 9 - 2
v8js_v8.cc

@@ -65,8 +65,15 @@ void v8js_v8_init(TSRMLS_D) /* {{{ */
 
 	/* Set V8 command line flags (must be done before V8::Initialize()!) */
 	if (v8js_process_globals.v8_flags) {
-		v8::V8::SetFlagsFromString(v8js_process_globals.v8_flags,
-								   strlen(v8js_process_globals.v8_flags));
+		size_t flags_len = strlen(v8js_process_globals.v8_flags);
+
+		if (flags_len > std::numeric_limits<uint32_t>::max()) {
+			zend_throw_exception(php_ce_v8js_exception,
+				"Length of V8 flags exceeds maximum supported length", 0);
+		}
+		else {
+			v8::V8::SetFlagsFromString(v8js_process_globals.v8_flags, static_cast<int>(flags_len));
+		}
 	}
 
 	/* Initialize V8 */