diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index c2d1a8f846f9..a93252f7c450 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2221,6 +2221,7 @@ PHP_FUNCTION(odbc_result) if (rc != SQL_SUCCESS_WITH_INFO) { field_str = zend_string_truncate(field_str, result->values[field_ind].vallen, 0); } + ZSTR_VAL(field_str)[ZSTR_LEN(field_str)] = '\0'; RETURN_NEW_STR(field_str); break; diff --git a/ext/odbc/tests/bug80147.phpt b/ext/odbc/tests/bug80147.phpt new file mode 100644 index 000000000000..26e27c534eba --- /dev/null +++ b/ext/odbc/tests/bug80147.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #80147 (BINARY strings may not be properly zero-terminated) +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +string(8) "whatever"