@@ -488,8 +488,8 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
488
488
}
489
489
490
490
zval * addresses = NULL ;
491
- bool rasp = false ;
492
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "z|b " , & addresses , & rasp ) ==
491
+ long rasp_rule = dd_rasp_rule_none ;
492
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "z|l " , & addresses , & rasp_rule ) ==
493
493
FAILURE ) {
494
494
RETURN_FALSE ;
495
495
}
@@ -498,7 +498,12 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
498
498
RETURN_FALSE ;
499
499
}
500
500
501
- if (rasp && !get_global_DD_APPSEC_RASP_ENABLED ()) {
501
+ if (rasp_rule != dd_rasp_rule_lfi && rasp_rule != dd_rasp_rule_ssrf ) {
502
+ rasp_rule = dd_rasp_rule_none ;
503
+ }
504
+
505
+ if (rasp_rule != dd_rasp_rule_none &&
506
+ !get_global_DD_APPSEC_RASP_ENABLED ()) {
502
507
return ;
503
508
}
504
509
@@ -508,9 +513,9 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
508
513
return ;
509
514
}
510
515
511
- dd_result res = dd_request_exec (conn , addresses , rasp );
516
+ dd_result res = dd_request_exec (conn , addresses , rasp_rule );
512
517
513
- if (rasp ) {
518
+ if (rasp_rule > dd_rasp_rule_none ) {
514
519
clock_gettime (CLOCK_MONOTONIC_RAW , & end );
515
520
elapsed =
516
521
((int64_t )end .tv_sec - (int64_t )start .tv_sec ) *
@@ -570,6 +575,16 @@ static void _register_testing_objects()
570
575
{
571
576
dd_phpobj_reg_funcs (functions );
572
577
578
+ # define _REG_RASP_CONST (php_name , value ) \
579
+ do { \
580
+ char v[] = "datadog\\appsec\\rasp\\" php_name; \
581
+ dd_phpobj_reg_long_const( \
582
+ v, sizeof(v) - 1, value, CONST_CS | CONST_PERSISTENT); \
583
+ } while (0)
584
+
585
+ _REG_RASP_CONST ("LFI" , dd_rasp_rule_lfi );
586
+ _REG_RASP_CONST ("SSRF" , dd_rasp_rule_ssrf );
587
+
573
588
if (!get_global_DD_APPSEC_TESTING ()) {
574
589
return ;
575
590
}
0 commit comments