From bb1f286578c846fb4200e306dde8b5d01edee002 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 6 Nov 2019 12:32:48 +0100 Subject: test build with upstream patch for https://github.com/scoutapp/scout-apm-php-ext/issues/47 --- scoutapm-upstream.patch | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 scoutapm-upstream.patch (limited to 'scoutapm-upstream.patch') diff --git a/scoutapm-upstream.patch b/scoutapm-upstream.patch new file mode 100644 index 0000000..3513b94 --- /dev/null +++ b/scoutapm-upstream.patch @@ -0,0 +1,52 @@ +From edde934ede6f0d0f17c4e65f4c59ab06b7d43751 Mon Sep 17 00:00:00 2001 +From: James Titcumb +Date: Tue, 5 Nov 2019 15:57:29 +0000 +Subject: [PATCH] Fixes segfault that happens when arguments are looped over + too high + +--- + package.xml | 33 +++++++++++++++++++++++++-------- + tests/bug-47.phpt | 20 ++++++++++++++++++++ + zend_scoutapm.c | 2 +- + 3 files changed, 46 insertions(+), 9 deletions(-) + create mode 100644 tests/bug-47.phpt + +diff --git a/tests/bug-47.phpt b/tests/bug-47.phpt +new file mode 100644 +index 0000000..e15d34d +--- /dev/null ++++ b/tests/bug-47.phpt +@@ -0,0 +1,20 @@ ++--TEST-- ++Bug https://github.com/scoutapp/scout-apm-php-ext/issues/47 - fix segfault when accessing argument store out of bounds ++--SKIPIF-- ++ ++--FILE-- ++ ++--EXPECTF-- ++Notice: fwrite(): ScoutAPM could not determine arguments for this call in %s ++array(2) { ++ [0]=> ++ resource(%d) of type (%s) ++ [1]=> ++ string(%d) "fread/fwrite test" ++} +diff --git a/zend_scoutapm.c b/zend_scoutapm.c +index 98058fe..8d29a08 100644 +--- a/zend_scoutapm.c ++++ b/zend_scoutapm.c +@@ -346,7 +346,7 @@ void record_arguments_for_call(const char *call_reference, int argc, zval *argv) + zend_long find_index_for_recorded_arguments(const char *call_reference) + { + zend_long i = 0; +- for (; i <= SCOUTAPM_G(disconnected_call_argument_store_count); i++) { ++ for (; i < SCOUTAPM_G(disconnected_call_argument_store_count); i++) { + if (SCOUTAPM_G(disconnected_call_argument_store)[i].reference + && strcasecmp( + SCOUTAPM_G(disconnected_call_argument_store)[i].reference, -- cgit