From: Serhiy Storchaka Date: Mon, 20 Jul 2026 08:48:14 +0000 (+0300) Subject: gh-154227: Fix os.posix_openpt() on OpenBSD (GH-154228) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d01b90cf33f8f77172eb9f445dbc2ed0055ffd3b;p=thirdparty%2FPython%2Fcpython.git gh-154227: Fix os.posix_openpt() on OpenBSD (GH-154228) Co-Authored-By: Claude Fable 5 --- 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