mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.3'
This commit is contained in:
22
ext/gd/tests/bug79945.phpt
Normal file
22
ext/gd/tests/bug79945.phpt
Normal file
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
Bug #79945 (using php wrappers in imagecreatefrompng causes segmentation fault)
|
||||
--EXTENSIONS--
|
||||
gd
|
||||
--SKIPIF--
|
||||
<?php
|
||||
set_error_handler(function($errno, $errstr) {
|
||||
if (str_contains($errstr, 'Cannot cast a filtered stream on this system')) {
|
||||
die('skip: fopencookie not support on this system');
|
||||
}
|
||||
});
|
||||
imagecreatefrompng('php://filter/read=convert.base64-encode/resource=' . __DIR__ . '/test.png');
|
||||
restore_error_handler();
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
imagecreatefrompng('php://filter/read=convert.base64-encode/resource=' . __DIR__ . '/test.png');
|
||||
?>
|
||||
--CLEAN--
|
||||
--EXPECTF--
|
||||
|
||||
Warning: imagecreatefrompng(): "php://filter/read=convert.base64-encode/resource=%s" is not a valid PNG file in %s on line %d
|
||||
@@ -2,6 +2,8 @@
|
||||
Test gzcompress() function : basic functionality
|
||||
--EXTENSIONS--
|
||||
zlib
|
||||
--SKIPIF--
|
||||
<?php if (getenv('TRAVIS')) die('skip Currently fails on Travis'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
/*
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
Test gzdeflate() function : basic functionality
|
||||
--EXTENSIONS--
|
||||
zlib
|
||||
--SKIPIF--
|
||||
<?php if (getenv('TRAVIS')) die('skip Currently fails on Travis'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
/*
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
Test gzencode() function : basic functionality
|
||||
--EXTENSIONS--
|
||||
zlib
|
||||
--SKIPIF--
|
||||
<?php if (getenv('TRAVIS')) die('skip Currently fails on Travis'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
/*
|
||||
|
||||
@@ -207,17 +207,21 @@ struct _php_stream {
|
||||
void *wrapperthis; /* convenience pointer for an instance of a wrapper */
|
||||
zval wrapperdata; /* fgetwrapperdata retrieves this */
|
||||
|
||||
uint8_t is_persistent:1;
|
||||
uint8_t in_free:2; /* to prevent recursion during free */
|
||||
uint8_t eof:1;
|
||||
uint8_t __exposed:1; /* non-zero if exposed as a zval somewhere */
|
||||
uint16_t is_persistent:1;
|
||||
uint16_t in_free:2; /* to prevent recursion during free */
|
||||
uint16_t eof:1;
|
||||
uint16_t __exposed:1; /* non-zero if exposed as a zval somewhere */
|
||||
|
||||
/* so we know how to clean it up correctly. This should be set to
|
||||
* PHP_STREAM_FCLOSE_XXX as appropriate */
|
||||
uint8_t fclose_stdiocast:2;
|
||||
uint16_t fclose_stdiocast:2;
|
||||
|
||||
|
||||
/* flag to mark whether the stream has buffered data */
|
||||
uint8_t has_buffered_data:1;
|
||||
uint16_t has_buffered_data:1;
|
||||
|
||||
/* whether stdio cast flushing is in progress */
|
||||
uint16_t fclose_stdiocast_flush_in_progress:1;
|
||||
|
||||
char mode[16]; /* "rwb" etc. ala stdio */
|
||||
|
||||
|
||||
@@ -1322,8 +1322,13 @@ PHPAPI zend_off_t _php_stream_tell(php_stream *stream)
|
||||
PHPAPI int _php_stream_seek(php_stream *stream, zend_off_t offset, int whence)
|
||||
{
|
||||
if (stream->fclose_stdiocast == PHP_STREAM_FCLOSE_FOPENCOOKIE) {
|
||||
/* flush to commit data written to the fopencookie FILE* */
|
||||
fflush(stream->stdiocast);
|
||||
/* flush can call seek internally so we need to prevent an infinite loop */
|
||||
if (!stream->fclose_stdiocast_flush_in_progress) {
|
||||
stream->fclose_stdiocast_flush_in_progress = 1;
|
||||
/* flush to commit data written to the fopencookie FILE* */
|
||||
fflush(stream->stdiocast);
|
||||
stream->fclose_stdiocast_flush_in_progress = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* handle the case where we are in the buffer */
|
||||
|
||||
Reference in New Issue
Block a user