cpython/Modules/_ctypes
Bénédikt Tran 6ac578cf53
[3.12] gh-126554: ctypes: Correctly handle NULL dlsym values (GH-126555) (GH-127764)
For dlsym(), a return value of NULL does not necessarily indicate
an error [1].

Therefore, to avoid using stale (or NULL) dlerror() values, we must:

 1. clear the previous error state by calling dlerror()
 2. call dlsym()
 3. call dlerror()

If the return value of dlerror() is not NULL, an error occured.

In ctypes we choose to treat a NULL return value from dlsym()
as a "not found" error. This is the same as the fallback
message we use on Windows, Cygwin or when getting/formatting
the error reason fails.

[1]: https://man7.org/linux/man-pages/man3/dlsym.3.html

Signed-off-by: Georgios Alexopoulos <grgalex42@gmail.com>
Signed-off-by: Georgios Alexopoulos <grgalex@ba.uoa.gr>
Co-authored-by: George Alexopoulos <giorgosalexo0@gmail.com>
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2024-12-17 13:53:43 +02:00
..
_ctypes.c [3.12] gh-126554: ctypes: Correctly handle NULL dlsym values (GH-126555) (GH-127764) 2024-12-17 13:53:43 +02:00
_ctypes_test.c [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
_ctypes_test.h Copy ctypes-0.9.9.4 sources from external into the trunk. 2006-03-08 19:35:11 +00:00
callbacks.c [3.12] gh-105375: Improve error handling in _ctypes (GH-105593) (#105663) 2023-06-11 20:25:27 +00:00
callproc.c [3.12] gh-126554: ctypes: Correctly handle NULL dlsym values (GH-126555) (GH-127764) 2024-12-17 13:53:43 +02:00
cfield.c gh-103092: Isolate _ctypes, part 1 (#103893) 2023-04-27 14:57:54 +02:00
ctypes.h gh-103092: Port _ctypes.COMError to heap type (#104020) 2023-05-04 13:03:24 +00:00
malloc_closure.c gh-99337: Fix compile errors with gcc 12 on macOS (#99470) 2022-11-21 10:50:20 +01:00
stgdict.c gh-110190: Fix ctypes structs with array on Windows ARM64 (GH-114753) 2024-01-31 00:15:16 +00:00