Bug #33750 buffer overflow on reading a BIT(64) value using NDBAPI

Submitted: 8 Jan 2008 19:49 Modified: 20 Feb 2008 22:11
Reporter: Hartmut Holzgraefe Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: NDB API Severity:S3 (Non-critical)
Version:mysql-5.1.22-ndb-6.3.6 OS:Linux
Assigned to: Frazer Clement CPU Architecture:Any

[8 Jan 2008 19:49] Hartmut Holzgraefe
Description:
When reading a BIT(64) using NdbOperation:getValue() 
an 8 byte buffer should be sufficient to store the result,
but actually 12 bytes are written to the buffer in this case.

A BIT(32) column result fits into 4 bytes as expected,
BIT(33) to BIT(63) fit into 8 bytes which is expected, too,
taking 4 byte alignments into account, but BIT(64) should
still fit into 8 bytes.

How to repeat:
See README in attached source project
[8 Jan 2008 20:05] Hartmut Holzgraefe
test project

Attachment: csc22154-0.1.tar.gz (application/x-gzip, text), 300.42 KiB.

[8 Jan 2008 20:06] Hartmut Holzgraefe
Workaround: use larger buffer
[22 Jan 2008 16:58] Frazer Clement
Proposed patch for Bug 33750

Attachment: bug33750.patch (text/x-patch), 23.51 KiB.

[23 Jan 2008 6:00] Jonas Oreland
i think you could assert that len > 0
otherwise looks great
how much has run-time of testBitfield increased ?
[23 Jan 2008 7:16] Frazer Clement
Modified patch with len==0 case changed to assert and increased test iterations

Attachment: bug33750-v2.patch (text/x-patch), 24.11 KiB.

[23 Jan 2008 7:18] Frazer Clement
Runtime of testBitfield.cpp increased from ~13s to ~19s by this patch.
[23 Jan 2008 8:21] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/41137

ChangeSet@1.2584, 2008-01-23 09:22:26+01:00, jonas@perch.ndb.mysql.com +3 -0
  ndb - bug#33750
    make sure that getField does not write after supplied buffer
[23 Jan 2008 8:57] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/41138

ChangeSet@1.2409, 2008-01-23 09:59:06+01:00, jonas@perch.ndb.mysql.com +3 -0
  ndb - bug#33750
      make sure that getField does not write after supplied buffer
      (recommit to correct clone, for easy merging)
[23 Jan 2008 9:57] Jonas Oreland
pushed into 50-ndb, telco-61, telco-62, telco-63
51-telco-gca & 50-telco-gca
[23 Jan 2008 12:50] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/41150

ChangeSet@1.2187, 2008-01-23 13:50:17+01:00, jonas@perch.ndb.mysql.com +3 -0
  ndb - bug#33750 (drop6)
    make sure that getField does not write after supplied buffer
[1 Feb 2008 14:29] Jon Stephens
Documented bugfix in 5.1.23-ndb-6.3.8 changelog as follows:

      
        When reading a BIT(64) value using
        NdbOperation:getValue(), 12 bytes are written
        to the buffer rather than the expected 8 bits.
      
Left bug in PQ status mending additional merges.
[2 Feb 2008 12:04] Jon Stephens
Also documented for 5.1.23-ndb-6.2.11; left status unchanged.
[20 Feb 2008 16:02] Bugs System
Pushed into 5.0.58
[20 Feb 2008 16:02] Bugs System
Pushed into 5.1.24-rc
[20 Feb 2008 16:04] Bugs System
Pushed into 6.0.5-alpha
[20 Feb 2008 22:11] Jon Stephens
Also documented for 5.0.58, 5.1.24, and 6.0.5.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.070 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.