@@ -197,11 +197,7 @@ static int nr_drupal8_is_function_in_call_stack(const char* function,
197197 trace = nr_php_zval_alloc ();
198198
199199 /* Grab the actual backtrace. */
200- #if ZEND_MODULE_API_NO >= ZEND_5_4_X_API_NO
201200 zend_fetch_debug_backtrace (trace , 0 , 1 , 0 TSRMLS_CC );
202- #else /* PHP < 5.4 */
203- zend_fetch_debug_backtrace (trace , 0 , 1 TSRMLS_CC );
204- #endif
205201
206202 if (!nr_php_is_zval_valid_array (trace )) {
207203 nrl_error (NRL_TXN , "%s: trace should never not be an array" , __func__ );
@@ -609,14 +605,23 @@ NR_PHP_WRAPPER_END
609605#endif // OAPI
610606
611607static bool nr_is_invalid_key_val_arr (nr_php_string_hash_key_t * key ,
612- zval * val ) {
613- if (NULL == key || 0 == ZEND_STRING_LEN (key )
614- || 0 == nr_php_is_zval_valid_array (val )
608+ zval * val ,
609+ const char * key_ident ) {
610+ if (NULL == key || 0 == ZEND_STRING_LEN (key )) {
611+ nrl_warning (NRL_FRAMEWORK , "hookImplementationsMap[%s]: invalid key" ,
612+ key_ident );
613+ return true;
614+ }
615+
616+ if (0 == nr_php_is_zval_valid_array (val )
615617 || 0 == zend_hash_num_elements (Z_ARRVAL_P (val ))) {
618+ nrl_warning (NRL_FRAMEWORK ,
619+ "hookImplementationsMap[%s]: invalid value for key '%s'" ,
620+ key_ident , NRSAFESTR (ZEND_STRING_VALUE (key )));
616621 return true;
617- } else {
618- return false;
619622 }
623+
624+ return false;
620625}
621626
622627/*
@@ -650,25 +655,27 @@ static bool nr_drupal_hook_attribute_instrument(zval* module_handler) {
650655
651656 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (hook_implementation_map ), hook_key ,
652657 hook_val ) {
653- if (nr_is_invalid_key_val_arr (hook_key , hook_val )) {
654- nrl_warning (NRL_FRAMEWORK ,
655- "hookImplementationsMap[hook]: invalid key or value" );
658+ if (nr_is_invalid_key_val_arr (hook_key , hook_val , "hook" )) {
656659 return false;
657660 }
658661
659662 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (hook_val ), class_key , class_val ) {
660- if (nr_is_invalid_key_val_arr (class_key , class_val )) {
661- nrl_warning (NRL_FRAMEWORK ,
662- "hookImplementationsMap[class]: invalid key or value" );
663+ if (nr_is_invalid_key_val_arr (class_key , class_val , "class" )) {
663664 return false;
664665 }
665666
666667 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (class_val ), method_key ,
667668 module_val ) {
668- if (NULL == method_key
669- || 0 == nr_php_is_zval_valid_string (module_val )) {
669+ if (NULL == method_key ) {
670670 nrl_warning (NRL_FRAMEWORK ,
671- "hookImplementationsMap[method]: invalid key or value" );
671+ "hookImplementationsMap[method]: invalid key" );
672+ return false;
673+ }
674+ if (0 == nr_php_is_zval_valid_string (module_val )) {
675+ nrl_warning (
676+ NRL_FRAMEWORK ,
677+ "hookImplementationsMap[method]: invalid value for key '%s'" ,
678+ NRSAFESTR (ZEND_STRING_VALUE (method_key )));
672679 return false;
673680 }
674681
0 commit comments