From d01b90cf33f8f77172eb9f445dbc2ed0055ffd3b Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 11:48:14 +0300 Subject: [PATCH] gh-154227: Fix os.posix_openpt() on OpenBSD (GH-154228) Co-Authored-By: Claude Fable 5 --- .../Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst | 2 ++ Modules/posixmodule.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst b/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst new file mode 100644 index 000000000000..e33d090d78c5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst @@ -0,0 +1,2 @@ +Fix :func:`os.posix_openpt` on OpenBSD, where it rejected the +:data:`~os.O_CLOEXEC` flag. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 02d25adddd62..69f01e04244d 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -9186,7 +9186,9 @@ os_posix_openpt_impl(PyObject *module, int oflag) { int fd; -#if defined(O_CLOEXEC) + // OpenBSD posix_openpt() rejects any flag other than O_RDWR and + // O_NOCTTY; the fd is made non-inheritable below in any case. +#if defined(O_CLOEXEC) && !defined(__OpenBSD__) oflag |= O_CLOEXEC; #endif -- 2.47.3