소스 검색

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 */