[issue46966] c_void_p array is a footgun on I32LP64 systems

2022-03-09 Thread JP Sugarbroad


JP Sugarbroad  added the comment:

That matches our expectation. A subclass works - perhaps `c_void_p` could be 
deprecated in favor of a built-in subclass for generic opaque pointers as well?

Glad you agree that a warning would be useful here.

--

___
Python tracker 
<https://bugs.python.org/issue46966>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46966] c_void_p array is a footgun on I32LP64 systems

2022-03-08 Thread JP Sugarbroad


New submission from JP Sugarbroad :

The following code will likely crash on I32LP64 systems:

dim = lib.get_array_size(opaque)
ptrs = (c_void_p * dim)()
lib.get_array_values(opaque, ptrs)
for ptr in ptrs:
print(lib.get_object_value(ptr))

What happens is that `ptr` is not a `c_void_p` -- it's just a bare number. And 
when it's passed to another function it goes in as a (32-bit) `c_int`, 
resulting in a truncation.

I'm not sure what can be done here (maybe a truncation warning?) but it's 
definitely a difficult bug to notice when reviewing code.

--
components: ctypes
messages: 414783
nosy: taralx
priority: normal
severity: normal
status: open
title: c_void_p array is a footgun on I32LP64 systems
type: behavior
versions: Python 3.10, Python 3.11, Python 3.7, Python 3.8, Python 3.9

___
Python tracker 
<https://bugs.python.org/issue46966>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue15994] memoryview to freed memory can cause segfault

2018-10-08 Thread JP Sugarbroad


Change by JP Sugarbroad :


--
nosy: +taralx

___
Python tracker 
<https://bugs.python.org/issue15994>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com