Issue 23319: Missing SWAP_INT in I_set_sw (original) (raw)

Issue23319

Created on 2015-01-25 18:53 by mgautierfr, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
ctypes_swap_uint.patch mgautierfr,2015-01-25 18:53 Fix the bug. Add the missing SWAP_INT. review
ctypes_swap_uint_unittest.patch mgautierfr,2015-06-24 15:48 Add missing SWAP_INT + unit_test review
Messages (9)
msg234682 - (view) Author: Matthieu Gautier (mgautierfr) * Date: 2015-01-25 18:53
I_set_sw function is missing a SWAP_INT. This leads to wrong set of bitfield value. Here is a script to reproduce: ---------- from ctypes import * class HEADER(BigEndianStructure): _fields_ = ( ('pad', c_uint32, 16), ('v1', c_uint32, 4), ('v2', c_uint32, 12) ) b = bytearray(4) header = HEADER.from_buffer(b) header.type = 1 assert b == b'\x00\x00\x10\x00' header.mode = 0x234 assert b == b'\x00\x00\x12\x34' ----------
msg245758 - (view) Author: Matthieu Gautier (mgautierfr) * Date: 2015-06-24 15:48
A little ping. With a new patch integrating the unit test.
msg246509 - (view) Author: Meador Inge (meador.inge) * (Python committer) Date: 2015-07-09 15:44
I will review this today.
msg246797 - (view) Author: Matthieu Gautier (mgautierfr) * Date: 2015-07-16 09:47
The bug is also present in Python 2.7. Is it possible to backport this fix ?
msg247567 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-07-29 12:36
New changeset 935ae7f001e3 by Victor Stinner in branch '3.4': Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch https://hg.python.org/cpython/rev/935ae7f001e3
msg247568 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-07-29 12:37
New changeset 88f2c4f12b56 by Victor Stinner in branch '2.7': Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch https://hg.python.org/cpython/rev/88f2c4f12b56
msg247569 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-07-29 12:38
Thanks for your report, patch and unit test Matthieu. I rewrote the unit test because your layout was too complex for my little brain :-) I also write a unit test for little endian. I applied your fix to Python 2.7, 3.4, 3.5 and 3.6.
msg247570 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-07-29 12:41
New changeset 12b353f76447 by Victor Stinner in branch '2.7': Issue #23319: Add Matthieu Gautier to Misc/ACKS https://hg.python.org/cpython/rev/12b353f76447 New changeset 3caa68f55e3e by Victor Stinner in branch '3.4': Issue #23319: Add Matthieu Gautier to Misc/ACKS https://hg.python.org/cpython/rev/3caa68f55e3e
msg247572 - (view) Author: Meador Inge (meador.inge) * (Python committer) Date: 2015-07-29 13:20
Thanks for committing this Victor. The patch looked good to me too. Sorry for not getting around to update the tracker.
History
Date User Action Args
2022-04-11 14:58:12 admin set github: 67508
2015-07-29 13:20:12 meador.inge set messages: +
2015-07-29 12:41:34 python-dev set messages: +
2015-07-29 12:38:49 vstinner set status: open -> closednosy: + vstinnermessages: + resolution: fixed
2015-07-29 12:37:39 python-dev set messages: +
2015-07-29 12:36:24 python-dev set nosy: + python-devmessages: +
2015-07-16 09:47:25 mgautierfr set messages: + versions: + Python 2.7
2015-07-09 15:44:47 meador.inge set assignee: meador.ingemessages: + stage: patch review
2015-07-08 07:11:31 mgautierfr set versions: + Python 3.5
2015-06-24 17:31:57 serhiy.storchaka set nosy: + amaury.forgeotdarc, belopolsky, meador.inge
2015-06-24 15:48:05 mgautierfr set files: + ctypes_swap_uint_unittest.patchmessages: +
2015-01-25 18:53:37 mgautierfr create