diff options
author | Mark Shannon <mark@hotpy.org> | 2023-08-10 11:29:06 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-10 11:29:06 (GMT) |
commit | 494e3d4436774a5ac1a569a635b8c5c881ef1c0c (patch) | |
tree | 46132b852f0f16f15e41c58755dc6bcc7c89e011 | |
parent | 39ef93edb9802dccdb6555d4209ac2e60875a011 (diff) | |
download | cpython-494e3d4436774a5ac1a569a635b8c5c881ef1c0c.zip cpython-494e3d4436774a5ac1a569a635b8c5c881ef1c0c.tar.gz cpython-494e3d4436774a5ac1a569a635b8c5c881ef1c0c.tar.bz2 |
GH-107774: Add missing audit event for PEP 669 (GH-107775)
-rw-r--r-- | Lib/test/audit-tests.py | 11 | ||||
-rw-r--r-- | Lib/test/test_audit.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst | 3 | ||||
-rw-r--r-- | Python/instrumentation.c | 3 |
4 files changed, 30 insertions, 0 deletions
diff --git a/Lib/test/audit-tests.py b/Lib/test/audit-tests.py index 0edc9d9..9504829 100644 --- a/Lib/test/audit-tests.py +++ b/Lib/test/audit-tests.py @@ -514,6 +514,17 @@ def test_not_in_gc(): assert hook not in o +def test_sys_monitoring_register_callback(): + import sys + + def hook(event, args): + if event.startswith("sys.monitoring"): + print(event, args) + + sys.addaudithook(hook) + sys.monitoring.register_callback(1, 1, None) + + if __name__ == "__main__": from test.support import suppress_msvcrt_asserts diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py index 0b69864..b12ffa5 100644 --- a/Lib/test/test_audit.py +++ b/Lib/test/test_audit.py @@ -257,5 +257,18 @@ class AuditTest(unittest.TestCase): self.fail(stderr) + def test_sys_monitoring_register_callback(self): + returncode, events, stderr = self.run_python("test_sys_monitoring_register_callback") + if returncode: + self.fail(stderr) + + if support.verbose: + print(*events, sep='\n') + actual = [(ev[0], ev[2]) for ev in events] + expected = [("sys.monitoring.register_callback", "(None,)")] + + self.assertEqual(actual, expected) + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst b/Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst new file mode 100644 index 0000000..b89b50c --- /dev/null +++ b/Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst @@ -0,0 +1,3 @@ +PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an +audit event. Pre-releases of Python 3.12 did not generate the audit event. +This is now fixed. diff --git a/Python/instrumentation.c b/Python/instrumentation.c index 65ea790..64684ad 100644 --- a/Python/instrumentation.c +++ b/Python/instrumentation.c @@ -1851,6 +1851,9 @@ monitoring_register_callback_impl(PyObject *module, int tool_id, int event, PyErr_Format(PyExc_ValueError, "invalid event %d", event); return NULL; } + if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) { + return NULL; + } if (func == Py_None) { func = NULL; } |