Bug #68949 [Opn]: Very strange binary dump and class not found
| From: | yunosh@php.net | Date: | Mon, 02 Feb 2015 08:02:13 +0000 |
| Subject: | Bug #68949 [Opn]: Very strange binary dump and class not found | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-190397@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=68949&edit=1
ID: 68949
Updated by: yunosh@php.net
Reported by: yunosh@php.net
Summary: Very strange binary dump and class not found
Status: Open
Type: Bug
Package: Scripting Engine problem
Operating System: Linux
PHP Version: master-Git-2015-01-29 (Git)
Block user comment: N
Private report: N
New Comment:
That's correct, the file contains some binary data contained in PHP code (password hashes). We
could (and should) fix that of course. But it's still a BC break that this file doesn't
parse anymore. And the leaking of what looks like some memory dump could be the sign of a bigger,
maybe even security relevant, problem.
Previous Comments:
------------------------------------------------------------------------
[2015-02-01 05:25:30] phpmpan at mpan dot pl
I mean the "TestCase.php" file.
------------------------------------------------------------------------
[2015-02-01 05:18:26] phpmpan at mpan dot pl
At byte offset 0x044C there is a sequence (", f, o, o, b, a, r, ") encoded using UTF-16LE,
hence containing 0x00 octets. At 0x0639 and 0x067C there is something that looks like binary data
embedded directly in the script.
------------------------------------------------------------------------
[2015-01-31 01:49:39] yohgaki@php.net
Could you identify when this issue is introduced?
------------------------------------------------------------------------
[2015-01-30 20:02:35] requinix@php.net
That output is actually some PHP code (class definition for Horde_Auth_TestCase) being incorrectly
interpreted in UTF-16 encoding.
Seems like there's something wrong with the TestCase.php file itself as GitHub doesn't
want to show the file contents, but some cursory tests against the raw download all show it's
fine.
------------------------------------------------------------------------
[2015-01-30 09:20:24] yunosh@php.net
USE_ZEND_ALLOC=0 valgrind --leak-check=full php -r 'require "Autoload.php"; require
"Unit/PasswdTest.php";'
==3906== Memcheck, a memory error detector
==3906== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==3906== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==3906== Command: php -r require\ "Autoload.php";\ require\
"Unit/PasswdTest.php";
==3906==
㼼桰⨯ਪ⨠ä ç¡â¥æ½¦â²æ´ç³æ¹©â¹§âਪ⨠ä ç¯ç¹æ©ç¨ã ã°â´°ã²ã±ä ç¯æ¤ä° äâ ç¨ç´â¼ºç¯ç·æ ®ç¯æ¤æ¼®æ²â¤¯âà¨ªâ¨ å æ¥ç æ¨æ æ®æ½¬æ³â¤æ¥¦æ¬ä åä¥äæ ç¯æ° æ©æ¹¥æ³æ¤ æ®ç¯æ
楴湯â ää±â¸©ä¤ â¦æ½¹à©µâ¨ æ æ©æ¸ ç¯ç æ¥æ¥¥æ¶ç æ¥¨â³æ¥¦æ¬æ³â¥ç¨ç´â¼ºç¯ç·æ ®ç¯æ¤æ¼®æ²æ°¯æ©æ¹¥æ³â½³æ¬æ±°ã²à¨®â¨ âæç¡æ¥ç¯â¹â æ½æ²à©¥â¨ ä æ
°æ£æ¡â¥â ä çµà©¨â¨ ä ç³ç¢æ¡æ
«æ§å 楮å´ç¥ç´âæ
çµæ½¨â²â â çæ¹®ç¡å æ½²æ¢ç¼æ½²æ¢ä¬æ
°æ²çµæ®ã¹¥âæ±æ©æ¹¥æ³â â ç¨ç´â¼ºç¯ç·æ ®ç¯æ¤æ¼®æ²æ°¯æ©æ¹¥æ³â½³æ¬æ±°ã²ä° åâ¨ ä æ¥¬æ®â â â æ ç´ã©°â¼¯æ°ç¡æ ®ç¯æ¤æ¼®æ²æ¤¯æ®ç¡¥ç®ç¨ç¿æ¡æ
«æ§ä½çµà©¨â¨ ਯ汣ç¡â³æ½æ²å½¥çæ¡´åç¥ä´ç¡â¥ç¡¥æ´æ®â³æ½æ²å½¥æç³äç¡à©¥à©»â â ç°æ±¢æ©æ æ¹µç£æ½©æ§ä´æ²æ¤ç®æ
©ç¬â¤¨ââ ç¬ ââ â â ç ç¥çµç¡æ
²â¡¹ââ â â â â æ ç²ç¥¡â¨ç¡æµ²ã¤â°§â æ¤ç°â±ã±ää¢åä¤ç¶äæ©ã¡²æ±â½åå©ç¡ä²â®ã§ä±æå¡ââ°©ââ â!
â â â æ ç²ç¥¡â¨ç£ç¹â´ã §ã¥åç³æµæµ³ç¸â°§â æ¸â¤§à¨¬â â â â â â ç¡æ
²â¡¹æ§ç¥²ç°ææ½¬æ·ç©â¨â§æ°²å硲åãã¹â°§â ã¤å¡¬ç奸å㤳â¶â°©ââ â â â â æ ç²ç¥¡â¨ç£ç¹âµ´æ¤â³ã§ä´µæ©ãä¯å ³å¥
â°§â ã´â¤§à¨¬â â â â â â ç¡æ
²â¡¹æ§ç¥²ç°æ´ã¤â°§â ã¤ã¤ã³ã¡ã¡â¥åä±¹ä©å
¤ææ¸åçä¯ç©¦ãâ°§â ã¤ã¤ã³ã¡ã¡â¥â¤§à¨¬â â â â â â ç¡æ
²â¡¹æ´§ã¤æç¡ã¥â´ä¼§æ©ä¤²äªå³ä䵦ç¡å
䱸åãµ·â½â§â°©ââ â â â â æ ç²ç¥¡â¨æâ´µæ¨â¸ã§ã¸æ¸ã¶ã²æ°ã£ã¥£ã±ã¦ã°ã£ã¶ã³æ²ã¶â¦â§â°©ââ â â â â æ ç²ç¥¡â¨çæ¡â°§â "foobar"â°§â ⤧ਬâ â â â â â ç¡æ
²â¡¹æ´§ç¹æ±±â°§â 㤪ãã°ã³ä³ãä²ã¤²ã±ã±ä²ãä²ã
äã ´ã´ã¶ä´ä¶âµâ§â°©ââ â â â â æ ç²ç¥¡â¨æ±°æ¥¡â®æ§æ½¯æ
¢â²â§â°©ââ â â â â æ ç²ç¥¡â¨æ¡³â¡æ¤§å
âå
ä¥ãã°æ°·â½ªç¨°æ©åäæâ½â§â°©ââ â â â â æ ç²ç¥¡â¨æµ³ã¤â°§â åä¹ççºãä°æ¡æ¡¡çªæ«ãã¬ä¡¢ç¡ã¤ã¨â°§â ç©©ç¬ç!
±ç¨â¤§à¨¬â â â â â â ç¡æ
²â¡¹ç§æâµç¬§äµã䥽ä!
ä©ç©·å·ã³æ
æ
¤æ©¨æ°ä±¢æ°²æ¶ä©æ¸æ ²â²æ¤§æ±ºç
²æ¡·â¶ç´æµâ°©ââ â â â â æ ç²ç¥¡â¨æµ³ã¤â°§â æ¹¢ä³å©®å°æç¤«ç¡¹ä¬³ç¯å±äµç¥¬æµ¤ãµâ°§â ç©æ¶â¤§à¨¬â â â â â â ç¡æ
²â¡¹ç§æâµä§ãåæå²æ¶ä½æ©å¡æ¡ä½ä
ºçä
·â½ã§ë¬ââ°©ââ â â â â æ ç²ç¥¡â¨æµ³ã¤â°§â 礶渲ä«äæ¡äµã³ç¥¤ç欳å
¥å¥´å°ãµ£â°§â å å⤧ਬâ â â â â â ç¡æ
²â¡¹ç§æ¡³â¡æ§å
µå
²ç¹ç©¡çªçã䥝妿¡äåªæ¸æªå©å©¶åæµãµ§â½æ§æºæ¯æ¹µâ®â°©ââ â â â â æ ç²ç¥¡â¨ç³æ
¨â°§â 䱿µç¡°å¥ä¡â¼²æµã§æ¶ææ¢å¬ã ¶å
ªääµâ°§â â£è©â¤§à¨¬â â â â â â ç¡æ
²â¡¹ç§æ¡³â¡ã§å¡©ã¡²ç³æ
ä±¢æµ¸ç¡²ç·æ±µããä©çç¡ãâ±ã»âµâ°©ââ â â â â æ ç²ç¥¡â¨ç³æ
¨â°§â å»ä¡çµä¤¶ä½¥æ½£ç¬ã¸ä¡¤æä¡ç¥ããµç²ç¦ä
²å²å¡â°§â ç¡ãç¡ã¡ç¡ãâç´æµâ°©ââ â â â â æ ç²ç¥¡â¨ç³æ
¨â°§â 䤶佥潣ç¬ã¸ä¡¤æä¡ç¥ããµç²ç¦ä
²å²å¡â°§â ç¡ãç¡ã¡ç¡ãââ°©ââ â â â â æ ç²ç¥¡â¨ç³æ
¨ã²â¶ç¬§å!
ä
ã²ç´¶æ¹·ã¥äâ¯ä¥å©æ«ää·æ½ªæ½å
«æ©å«ç§æµç¥æ¡ä±æ±æ¹ã±ç«äâ°§â å±µä¸å±ä¸å°µã¸â¶ç´æµâ°©ââ â â â â æ ç²ç¥¡â¨ç³æ
¨ã²â¶ç§ä®ä¹æ½å«å¡âå¢ãæ©ä¯æ¯äæªæç´å¡¦ä¹ã
¨ç
塦ã
®â¬±å³âç¢ç¡ä
ç¡ãç¡ã°â¤¢à¨¬â â â â 㬩ââ ç´ ç´
Fatal error: Class 'Horde_Auth_TestCase' not found in
/home/vagrant/horde/framework/Auth/test/Horde/Auth/Unit/PasswdTest.php on line 18
==3906==
==3906== HEAP SUMMARY:
==3906== in use at exit: 17,540 bytes in 17 blocks
==3906== total heap usage: 28,049 allocs, 28,032 frees, 3,366,894 bytes allocated
==3906==
==3906== 80 bytes in 1 blocks are definitely lost in loss record 13 of 17
==3906== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==3906== by 0xA231BF: _emalloc (zend_alloc.c:2197)
==3906== by 0xA3896D: zend_string_alloc (zend_string.h:97)
==3906== by 0xA389D6: zend_string_init (zend_string.h:133)
==3906== by 0xA3C1DD: zend_eval_stringl (zend_execute_API.c:1057)
==3906== by 0xA3C47E: zend_eval_stringl_ex (zend_execute_API.c:1115)
==3906== by 0xA3C501: zend_eval_string_ex (zend_execute_API.c:1126)
==3906== by 0xAF7483: do_cli (php_cli.c:1022)
==3906== by 0xAF8351: main (php_cli.c:1361)
==3906==
==3906== 396 (208 direct, 188 indirect) bytes in 1 blocks are definitely lost in loss record 16 of
17
==3906== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==3906== by 0xA231BF: _emalloc (zend_alloc.c:2197)
==3906== by 0xA0068E: compile_file (zend_language_scanner.l:565)
==3906== by 0xE17D6C2: ???
==3906== by 0xA009D1: compile_filename (zend_language_scanner.l:640)
==3906== by 0xAA80ED: ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER (zend_vm_execute.h:2983)
==3906== by 0xAA1093: execute_ex (zend_vm_execute.h:352)
==3906== by 0xAA11E5: zend_execute (zend_vm_execute.h:381)
==3906== by 0xA3C2B6: zend_eval_stringl (zend_execute_API.c:1074)
==3906== by 0xA3C47E: zend_eval_stringl_ex (zend_execute_API.c:1115)
==3906== by 0xA3C501: zend_eval_string_ex (zend_execute_API.c:1126)
==3906== by 0xAF7483: do_cli (php_cli.c:1022)
==3906==
==3906== LEAK SUMMARY:
==3906== definitely lost: 288 bytes in 2 blocks
==3906== indirectly lost: 188 bytes in 4 blocks
==3906== possibly lost: 0 bytes in 0 blocks
==3906== still reachable: 17,064 bytes in 11 blocks
==3906== suppressed: 0 bytes in 0 blocks
==3906== Reachable blocks (those to which a pointer was found) are not shown.
==3906== To see them, rerun with: --leak-check=full --show-reachable=yes
==3906==
==3906== For counts of detected and suppressed errors, rerun with: -v
==3906== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 28 from 6)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=68949
--
Edit this bug report at https://bugs.php.net/bug.php?id=68949&edit=1