|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #73763 phar header miscalculation
Submitted: 2016-12-16 21:04 UTC Modified: 2020-03-04 23:14 UTC
From: eyal dot itkin at gmail dot com Assigned: cmb (profile)
Status: Duplicate Package: PHAR related
PHP Version: 7.1.0 OS:
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
Solve the problem:
45 - 38 = ?
Subscribe to this entry?

 [2016-12-16 21:04 UTC] eyal dot itkin at gmail dot com
phar_parse_pharfile() uses incorrect manifest header size of 10 bytes instead of 14 bytes. This leads to several incorrect checks:

1) The constant should be 14 bytes, instead of 10:

if (manifest_len < 10 || manifest_len != php_stream_read(fp, buffer, manifest_len)) {

This means that later the alias length (tmp_len) is read without being checked to be present in the buffer.

2) The alias length checks should be updated:

if (buffer + tmp_len > endbuffer) {
	MAPPHAR_FAIL("internal corruption of phar \"%s\" (buffer overrun)");
if (manifest_len < 10 + tmp_len) {
	MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest header)")

1st check is vulnerable to integer-overflow, and the 2nd uses incorrect size and is redundant. Fix should be:
if (tmp_len > endbuffer - buffer) {
	MAPPHAR_FAIL("internal corruption of phar \"%s\" (buffer overrun)");


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2020-03-04 23:14 UTC]
-Status: Open +Status: Duplicate -Assigned To: +Assigned To: cmb
 [2020-03-04 23:14 UTC]
This issue seems to have been fixed in the meantime[1], so I'm
closing as duplicate of bug #77143.

[1] <;a=commit;h=54212674b924aab506471060ff64986cda375f71>
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Wed Mar 22 16:03:38 2023 UTC