Add terminating character to zend_lookup_class call (#5871)
* add terminating character
* adjust name length input
* add test cases
* correct script name
* Misc fixes
* add new script to EXTRA_DIST list
diff --git a/php/ext/google/protobuf/def.c b/php/ext/google/protobuf/def.c
index ef0f711..184ae2d 100644
--- a/php/ext/google/protobuf/def.c
+++ b/php/ext/google/protobuf/def.c
@@ -853,9 +853,10 @@
fill_namespace(package, php_namespace, &namesink);
fill_classname(fullname, package, prefix, &namesink, use_nested_submsg);
+ stringsink_string(&namesink, NULL, "\0", 1, NULL);
PHP_PROTO_CE_DECLARE pce;
- if (php_proto_zend_lookup_class(namesink.ptr, namesink.len, &pce) ==
+ if (php_proto_zend_lookup_class(namesink.ptr, namesink.len - 1, &pce) ==
FAILURE) {
zend_error(
E_ERROR,
diff --git a/php/tests/compile_extension.sh b/php/tests/compile_extension.sh
new file mode 100755
index 0000000..bbd6696
--- /dev/null
+++ b/php/tests/compile_extension.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+EXTENSION_PATH=$1
+
+pushd $EXTENSION_PATH
+make clean || true
+set -e
+# Add following in configure for debug: --enable-debug CFLAGS='-g -O0'
+phpize && ./configure CFLAGS='-g -O0' && make
+popd
diff --git a/php/tests/php_implementation_test.php b/php/tests/php_implementation_test.php
index 8d27d19..307b749 100644
--- a/php/tests/php_implementation_test.php
+++ b/php/tests/php_implementation_test.php
@@ -14,8 +14,19 @@
use Google\Protobuf\Internal\GPBWire;
use Google\Protobuf\Internal\CodedOutputStream;
+/**
+ * Please note, this test is only intended to be run without the protobuf C
+ * extension.
+ */
class ImplementationTest extends TestBase
{
+ public function setUp()
+ {
+ if (extension_loaded('protobuf')) {
+ $this->markTestSkipped();
+ }
+ }
+
public function testReadInt32()
{
$value = null;
diff --git a/php/tests/test.sh b/php/tests/test.sh
index b5e8769..be6e97f 100755
--- a/php/tests/test.sh
+++ b/php/tests/test.sh
@@ -7,12 +7,7 @@
export CPLUS_INCLUDE_PATH=/usr/local/php-$VERSION/include/php/main:/usr/local/php-$VERSION/include/php:$CPLUS_INCLUDE_PATH
# Compile c extension
-pushd ../ext/google/protobuf/
-make clean || true
-set -e
-# Add following in configure for debug: --enable-debug CFLAGS='-g -O0'
-phpize && ./configure CFLAGS='-g -O0' && make
-popd
+/bin/bash ./compile_extension.sh ../ext/google/protobuf
tests=( array_test.php encode_decode_test.php generated_class_test.php map_field_test.php well_known_test.php descriptors_test.php wrapper_type_setters_test.php)