MAPPHAR_ALLOC_FAIL(msg)
// check for ?>\n and increment accordingly
- if (0 == php_stream_seek(fp, halt_offset, SEEK_SET)) {
- MAPPHAR_FAIL("cannot seek to __HALT_COMPILER() location in phar \"%s\"")
+ if (-1 == php_stream_seek(fp, halt_offset, SEEK_SET)) {
+ MAPPHAR_FAIL("cannot seek to __HALT_COMPILER(); location in phar \"%s\"")
}
if (FALSE == (buffer = (char *) emalloc(4))) {
}
}
// make sure we are at the right location to read the manifest
- php_stream_seek(fp, halt_offset, SEEK_SET);
+ if (-1 == php_stream_seek(fp, halt_offset, SEEK_SET)) {
+ MAPPHAR_FAIL("cannot seek to __HALT_COMPILER(); location in phar \"%s\"")
+ }
// read in manifest
--- /dev/null
+--TEST--
+PHP_Archive::mapPhar improper parameters
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip";?>
+--FILE--
+<?php
+PHP_Archive::mapPhar(5, 'hio', false);
+__HALT_COMPILER(); ?>()a
+--EXPECTF--
+Fatal error: PHP_Archive::mapPhar(): internal corruption of phar "%s" (truncated manifest) in %s on line %d
\ No newline at end of file