Skip to content

Commit

Permalink
gh-126018: Avoid aborting due to unnecessary assert in sys.audit (#…
Browse files Browse the repository at this point in the history
…126020)


Co-authored-by: Bénédikt Tran <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
  • Loading branch information
3 people authored Oct 27, 2024
1 parent dc76a4a commit 80eec52
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 1 deletion.
11 changes: 11 additions & 0 deletions Lib/test/audit-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,17 @@ def hook(event, args):
_winapi.CreateNamedPipe(pipe_name, _winapi.PIPE_ACCESS_DUPLEX, 8, 2, 0, 0, 0, 0)


def test_assert_unicode():
import sys
sys.addaudithook(lambda *args: None)
try:
sys.audit(9)
except TypeError:
pass
else:
raise RuntimeError("Expected sys.audit(9) to fail.")


if __name__ == "__main__":
from test.support import suppress_msvcrt_asserts

Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_audit.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,5 +307,12 @@ def test_winapi_createnamedpipe(self):

self.assertEqual(actual, expected)

def test_assert_unicode(self):
# See gh-126018
returncode, _, stderr = self.run_python("test_assert_unicode")
if returncode:
self.fail(stderr)


if __name__ == "__main__":
unittest.main()
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix a crash in :func:`sys.audit` when passing a non-string as first argument
and Python was compiled in debug mode.
1 change: 0 additions & 1 deletion Python/sysmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,6 @@ sys_audit(PyObject *self, PyObject *const *args, Py_ssize_t argc)
}

assert(args[0] != NULL);
assert(PyUnicode_Check(args[0]));

if (!should_audit(tstate->interp)) {
Py_RETURN_NONE;
Expand Down

0 comments on commit 80eec52

Please sign in to comment.