Warning: unpack(): Type H: outside of string (with PHP 4.3.10)

  • ページ: BugTrack
  • 投稿者: tokiwa?
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: その他
  • 投稿日: 2004-12-22 (水) 10:31:04
  • バージョン: 1.4.4

unpack in PHP4.3.10

PHP4.3.10にするとPukiWiki1.4.4の"差分を削除"を行うとunpack(func.phpのencode関数内)で"Warning: unpack(): Type H: outside of string)"が出でます。ただencode関数を呼ぶのdiffプラグインだけじゃないので、なぜこの場合だけ警告がでるのかわかりません。
これと関係があるのかもしれませんが、次のようなNoticeもでました。"Notice: Undefined index: plugin in ...\pukiwiki\skin\pukiwiki.skin.ja.php"
確認お願いします。 現象が起きた環境は Windows2000SP4, Apache2.0.52, PHP4.3.10, PukiWiki1.4.4 です。


  • 同様の症状が起きていました(cubic9.com:Blog/2004-12-17)。PHP 4.3.10 Release Announcementの「CAN-2004-1018 - integer overflow/underflow in pack() and unpack() functions.」の影響かと思われます。 -- でぃあばぁ 2004-12-22 (水) 11:43:59
    • 確認しました。場所で言うとPHPの ext/standard/pack.c のようですね -- henoheno
  • で対策は?その都度error_reporting? -- haha? 2004-12-22 (水) 19:10:41
  • error_reporting(E_ALL) は対策ではありません :) さて、手元の環境を 4.3.10 にした結果、素の 1.4.4_php5 + error_reporting(E_ALL) にて最初から上記Warningが出ることを確認しましたので、ちょっと検討します。*1 -- henoheno 2004-12-30 (木) 09:33:44
Warning: unpack(): Type H: outside of string in /pukiwiki-1.4.4_php5/lib/func.php on line 246
  • 「差分の削除」でだけ上記Warningが出る理由は、それを担当している関数 plugin_diff_delete() の先頭に error_reporting(E_ALL) が埋め込まれていたためでしょう。(現在のCVS版からは削除されています) -- henoheno 2004-12-30 (木) 13:55:57
  • とりあえず unpack()ではなく bin2hex () を使え、ということになりそうですね。 -- henoheno 2004-12-30 (木) 15:04:52
    • unpack() が上記のWarningを出す様になった経緯は、推測でしかありませんが、PHPにおけるunpack()側の「 PHP は内部的に整数を符号付で保持します。 大きな値の unsigned long を切出した場合、PHP の内部で保持された値は、 同じ大きさの符号付き整数となり、符号無しを指定して切出された場合でも 結果は負の数となります。」(マニュアルより)といった様な今までの内部処理的な都合と、integer overflowを強制的に止める(負になった値を強制的に0にするついでにWarningを出す)処理を追加した都合によるものではないかと思っています。 -- henoheno 2004-12-30 (木) 15:15:37
    • cvs:lib/func.php (1.21)
  • お疲れ様です。報告しっぱなしですみませんでした (^^; -- でぃあばぁ 2004-12-30 (木) 16:44:12
  • いえいえ、前情報あればこそです :) -- henoheno 2004-12-30 (木) 17:43:57
  • 本題の件が終了しているようなので完了にしておきます。 -- Ratbeta? 2005-02-08 (火) 17:18:46
    • ですです -- henoheno 2005-02-08 (火) 22:13:50

*1 「最初から出る」ことについては手元の環境がZend Optimizer入りなので、その影響もあるかもしれません

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-12-03 (月) 19:38:00
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.195 sec.

OSDN