@@ -2203,7 +2203,12 @@ PHP_FUNCTION(simplexml_load_file)
2203
2203
return ;
2204
2204
}
2205
2205
2206
- docp = xmlReadFile (filename , NULL , options );
2206
+ if (ZEND_LONG_EXCEEDS_INT (options )) {
2207
+ php_error_docref (NULL , E_WARNING , "Invalid options" );
2208
+ RETURN_FALSE ;
2209
+ }
2210
+
2211
+ docp = xmlReadFile (filename , NULL , (int )options );
2207
2212
2208
2213
if (!docp ) {
2209
2214
RETURN_FALSE ;
@@ -2244,7 +2249,20 @@ PHP_FUNCTION(simplexml_load_string)
2244
2249
return ;
2245
2250
}
2246
2251
2247
- docp = xmlReadMemory (data , data_len , NULL , NULL , options );
2252
+ if (ZEND_SIZE_T_INT_OVFL (data_len )) {
2253
+ php_error_docref (NULL , E_WARNING , "Data is too long" );
2254
+ RETURN_FALSE ;
2255
+ }
2256
+ if (ZEND_SIZE_T_INT_OVFL (ns_len )) {
2257
+ php_error_docref (NULL , E_WARNING , "Namespace is too long" );
2258
+ RETURN_FALSE ;
2259
+ }
2260
+ if (ZEND_LONG_EXCEEDS_INT (options )) {
2261
+ php_error_docref (NULL , E_WARNING , "Invalid options" );
2262
+ RETURN_FALSE ;
2263
+ }
2264
+
2265
+ docp = xmlReadMemory (data , (int )data_len , NULL , NULL , (int )options );
2248
2266
2249
2267
if (!docp ) {
2250
2268
RETURN_FALSE ;
@@ -2281,7 +2299,20 @@ SXE_METHOD(__construct)
2281
2299
return ;
2282
2300
}
2283
2301
2284
- docp = is_url ? xmlReadFile (data , NULL , options ) : xmlReadMemory (data , data_len , NULL , NULL , options );
2302
+ if (ZEND_SIZE_T_INT_OVFL (data_len )) {
2303
+ php_error_docref (NULL , E_WARNING , "Data is too long" );
2304
+ RETURN_FALSE ;
2305
+ }
2306
+ if (ZEND_SIZE_T_INT_OVFL (ns_len )) {
2307
+ php_error_docref (NULL , E_WARNING , "Namespace is too long" );
2308
+ RETURN_FALSE ;
2309
+ }
2310
+ if (ZEND_LONG_EXCEEDS_INT (options )) {
2311
+ php_error_docref (NULL , E_WARNING , "Invalid options" );
2312
+ RETURN_FALSE ;
2313
+ }
2314
+
2315
+ docp = is_url ? xmlReadFile (data , NULL , (int )options ) : xmlReadMemory (data , (int )data_len , NULL , NULL , (int )options );
2285
2316
2286
2317
if (!docp ) {
2287
2318
((php_libxml_node_object * )sxe )-> document = NULL ;
0 commit comments