Skip to content
Snippets Groups Projects
  • Damien Neil's avatar
    c23579f0
    database/sql: avoid clobbering driver-owned memory in RawBytes · c23579f0
    Damien Neil authored
    Depending on the query, a RawBytes can contain memory owned by the
    driver or by database/sql:
    
    If the driver provides the column as a []byte,
    RawBytes aliases that []byte.
    
    If the driver provides the column as any other type,
    RawBytes contains memory allocated by database/sql.
    Prior to this CL, Rows.Scan will reuse existing capacity in a
    RawBytes to permit a single allocation to be reused across rows.
    
    When a RawBytes is reused across queries, this can result
    in database/sql writing to driver-owned memory.
    
    Add a buffer to Rows to store RawBytes data, and reuse this
    buffer across calls to Rows.Scan.
    
    Fixes #65201
    
    Change-Id: Iac640174c7afa97eeb39496f47dec202501b2483
    Reviewed-on: https://go-review.googlesource.com/c/go/+/557917
    
    
    Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    Reviewed-by: default avatarRoland Shoemaker <roland@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    c23579f0
    History
    database/sql: avoid clobbering driver-owned memory in RawBytes
    Damien Neil authored
    Depending on the query, a RawBytes can contain memory owned by the
    driver or by database/sql:
    
    If the driver provides the column as a []byte,
    RawBytes aliases that []byte.
    
    If the driver provides the column as any other type,
    RawBytes contains memory allocated by database/sql.
    Prior to this CL, Rows.Scan will reuse existing capacity in a
    RawBytes to permit a single allocation to be reused across rows.
    
    When a RawBytes is reused across queries, this can result
    in database/sql writing to driver-owned memory.
    
    Add a buffer to Rows to store RawBytes data, and reuse this
    buffer across calls to Rows.Scan.
    
    Fixes #65201
    
    Change-Id: Iac640174c7afa97eeb39496f47dec202501b2483
    Reviewed-on: https://go-review.googlesource.com/c/go/+/557917
    
    
    Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    Reviewed-by: default avatarRoland Shoemaker <roland@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.