php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9366 bin2hex() outputs non-hex digits
Submitted: 2001-02-21 06:59 UTC Modified: 2001-05-03 11:02 UTC
From: gdambrosio at cspnet dot it Assigned:
Status: Closed Package: *Function Specific
PHP Version: 4.0.4pl1 OS: windows NT 4 (sp 4 or 5)
Private report: No CVE-ID: None
 [2001-02-21 06:59 UTC] gdambrosio at cspnet dot it
it seems an unpredictable problem, I couldn't reproduce it with a string as input: I've attached a base64_encoded file containg the suitable binary data (I'm sorry it there was a simpler way);

I'm still not completely sure if it is due to bin2hex() or strstr(), but this latter is very unlikely;

this is the script:
just change the fopen() with the filename you want;

<?php

 $f1 = fopen( 'c:\\temp\\--->filename.bin','rb');
 //open the attached file

 $s = fread( $f1, 500000 );
 //read it all


 fclose($f1);

 $s2= bin2hex($s);

 echo "lung s2=".strlen($s2)."<br><br>";
 // displays correctly filesize()*2, that is 4412 * 2


 echo "s2=<<<$s2>>><br><br>";

 /*
 M$'IE5 displays not writeble characters:
 tryign to select the end of the string, I get evermore of it (just while I'm selecting !)
 but this should be a M$'bug; Netscape 4.03 works properly;
 */


 $ris= strstr( $s2, "0d0a0d0a") ;
 // I'm looking for the first occurrence of that string; I know it is on position x0176



 // -----> here's the problem:

 echo "lung ris= ".strlen($ris). "<br><br>";
 // I get variable results, between 8077 and 8083

 echo "ris=$ris<br><br>";
 /*
 I get again not writeble or "invisible" characters in IE5;
 on Netscape I get (eg) "04ffd9R" at the end of the string;
 */



?>



and this is the file (base64_encoded):


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



some ways to work around the problem are:
rewriting and re-reading the output of bin2hex;

or reconstructing the string piece by piece, with something like [$s2 is bin2hex' output] :

 for ($i=0; $i < strlen($s2); $i=$i+100 )
    {
    $ricostr = $ricostr.substr($s2,$i, 100);
    }

in both cases, the next step of the script (that looks for "0d0a0d0a") works right;

I've looked into the string.c but it seems fine, I don't know what to think;


thank you for any help, 
contact me if you need more infos,

bye,
Giuse









 

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-02-21 07:33 UTC] gdambrosio at cspnet dot it
I've just found that the "reconstrunction" not ever works; only the rewrite/reread technique does;

bye again
 [2001-02-22 05:39 UTC] stas@php.net
Please see if current CVS snapshot fixes the problem.
 [2001-02-27 07:52 UTC] gdambrosio at cspnet dot it
I've tryed the 4.0.5-dev from www.php4win.de released on 20 febr. and I've got the same result; I'll work on compiling the latest CVS..
 [2001-02-27 08:00 UTC] stas@php.net
As you see, I wrote this comment on Feb. 22th, so please try
more recent version.
 [2001-04-10 10:07 UTC] sniper@php.net
No feedback. If this happens also with soon to be released PHP 4.0.5, reopen this bug report.

--Jani

 [2001-05-03 11:02 UTC] gdambrosio at cspnet dot it
(just informational)
ok, I think we can leave this closed;

with 4.0.5 I still get those "invisible" chars with IE5, but this should be a M$ bug;
Netscape or cURL work properly.

The length of the result string, strlen($ris), is now ever the same, also with IE;

I've re-tested the old file with 4.0.4 and 4.0.5-dev and still get the old errors
(posix 1003.3 FAIL);

--Giuse


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Apr 20 03:01:28 2024 UTC