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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: gdambrosio at cspnet dot it
New email:
PHP Version: OS:

 

 [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

Pull Requests

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: Thu Dec 26 12:01:30 2024 UTC