PEARのTar.phpが

  • 投稿日:
  • by
  • カテゴリ:

札幌ドミニカの10番(毒)

Tar.phpにも微妙な不具合があることが判明。これが原因でOpenPNE3というかsymfony 1.4がうまくパッケージを処理できないという問題が発生していた。というか、これがPHP5.5に起因するのか、或いは他の何かに起因するのかが定かではないのだけれど、とりあえず、こういう問題がPHPは富に起きやすい気がする。

写真は、特に意味は無いのだけれど、札幌ドミニカのスープカリィ......辛さは10番。やってはいけない注文だった。ほとんど毒と言っても過言ではないレベル。身体壊す。普通に普通の辛さで頼みたい、もしまた行くことがあったら。

さて、Tar.phpに加えるべき修正なのだが、自分への備忘録として書いておく。これは、PHP5.5でなくても起こるような気がしなくはないのだけれど、検証はしていない。

--- lib/vendor/PEAR/Archive/Tar.php.orig 2013-11-14 18:20:46.000000000 +0900
+++ lib/vendor/PEAR/Archive/Tar.php 2014-01-16 16:55:13.000000000 +0900
@@ -1344,7 +1344,7 @@
}

// ----- Extract the properties
- $v_header['filename'] = $v_data['filename'];
+ $v_header['filename'] = trim($v_data['filename']);
if ($this->_maliciousFilename($v_header['filename'])) {
$this->_error('Malicious .tar detected, file "' . $v_header['filename'] .
'" will not install in desired directory tree');

Tar.phpは1.3.1(現時点で最新)に対して当てている。単に、取り出されたファイル名をtrim()に食わせているだけなのだが、これをしないと、v_header['filename'] === 'package.xml' だとか preg_match('/package\.xml$/', ...)みたいなマッチングでうまくマッチしないのだ。つまりは、末尾に何かが付いている、見えないけれど。