Bug #75018 [Com]: Data corruption when reading fields of bit type

From: Date: Sun, 24 Sep 2017 10:11:44 +0000
Subject: Bug #75018 [Com]: Data corruption when reading fields of bit type
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-211342@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75018&edit=1 ID: 75018 Comment by: strange_v at ukr dot net Reported by: ale5000 at gmail dot com Summary: Data corruption when reading fields of bit type Status: Closed Type: Bug Package: MySQLi related Operating System: Windows 7 64-bit PHP Version: 7.1.7 Block user comment: N Private report: N New Comment: I've just reproduced this issue on latest version (7.1.9) which was compiled from sources for armv7 platform. Previous Comments: ------------------------------------------------------------------------ [2017-09-13 17:50:29] ale5000 at gmail dot com Thanks. Since this bug can lead to data corruption is it possible to release a new version of PHP with this fix included in a short time? ------------------------------------------------------------------------ [2017-09-13 12:13:17] ab@php.net Automatic comment on behalf of ab Revision: http://git.php.net/?p=php-src.git;a=commit;h=3d93856c4a05394196c5610ae11cf019d1e18f76 Log: Fixed bug #75018, fixed bug #75177 ------------------------------------------------------------------------ [2017-09-13 11:06:19] ab@php.net Related To: Bug #75177 ------------------------------------------------------------------------ [2017-08-01 15:07:53] michal at cihar dot com I've just tested this and here is what I've found out: - I can reproduce this when running 32-bit PHP on 64-bit Windows, it does not happen in 64-bit builds - The returned value seems to be random, depending on executed code or MySQL statements - I can reproduce this behavior on PHP 7.1.7 and 7.2.0beta1 Results I got: 0x1508618400000000 0x100000000 0x10c6632400000000 (though this most likely doesn't mean anything) ------------------------------------------------------------------------ [2017-08-01 14:19:29] ale5000 at gmail dot com Description: ------------ It corrupt data when reading fields of bit type. See the sample code. The problem is possibly Windows specific but I'm not sure. Test script: --------------- <?php $username = 'root'; $password = ''; $database_name = 'test_db'; $mysqli = new mysqli('127.0.0.1', $username, $password, $database_name); if($mysqli->connect_errno) die('Error'); $sql = "CREATE TABLE test (bit_column_1 bit(1) NOT NULL) DEFAULT CHARSET=utf8"; $mysqli->query($sql); $sql = "INSERT INTO test (bit_column_1) VALUES (0)"; $mysqli->query($sql); $sql = "SELECT bit_column_1 FROM test"; if(!$result = $mysqli->query($sql)) die('Failed'); $row = $result->fetch_assoc(); echo "Result: ".$row['bit_column_1']; Expected result: ---------------- 0 Actual result: -------------- 668556962937438208 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=75018&edit=1

« previous php.bugs (#211342) next »