diff options
author | Werner Koch <[email protected]> | 2023-05-23 13:52:25 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-05-23 13:52:25 +0000 |
commit | 36a68bc5308c0b4a541ca6adea5d3635217e8af2 (patch) | |
tree | 13c0878eb820bfbe64d049acfcec86b0cab2ac78 | |
parent | build: Sync to libtool from libgpg-error for 64-bit Windows. (diff) | |
download | gpgme-36a68bc5308c0b4a541ca6adea5d3635217e8af2.tar.gz gpgme-36a68bc5308c0b4a541ca6adea5d3635217e8af2.zip |
python: Fix wrong use of write.
* lang/python/helpers.c (pyPassphraseCb): Use gpgme_io_writen.
(_gpg_interact_cb): Ditto.
* lang/python/helpers.h (write) [W32]: Remove bad write macro.
--
GnuPG-bug-id: T6501
Using write(2) without checking for EINTR is a not a good idea.
Futher gpgme_io_writen is the correct way to send data from a
callback. This also fixed the wrong use of a simple macro for
Windows.
-rw-r--r-- | lang/python/helpers.c | 10 | ||||
-rw-r--r-- | lang/python/helpers.h | 5 |
2 files changed, 5 insertions, 10 deletions
diff --git a/lang/python/helpers.c b/lang/python/helpers.c index d5d1fc99..1ce7f487 100644 --- a/lang/python/helpers.c +++ b/lang/python/helpers.c @@ -404,7 +404,7 @@ static gpgme_error_t pyPassphraseCb(void *hook, err_status = _gpg_exception2code(); } else { if (!retval) { - if (write(fd, "\n", 1) < 0) { + if (gpgme_io_writen (fd, "\n", 1) < 0) { err_status = gpgme_error_from_syserror (); _gpg_raise_exception (err_status); } @@ -439,11 +439,11 @@ static gpgme_error_t pyPassphraseCb(void *hook, goto leave; } - if (write(fd, buf, len) < 0) { + if (gpgme_io_writen (fd, buf, len) < 0) { err_status = gpgme_error_from_syserror (); _gpg_raise_exception (err_status); } - if (! err_status && write(fd, "\n", 1) < 0) { + if (! err_status && gpgme_io_writen (fd, "\n", 1) < 0) { err_status = gpgme_error_from_syserror (); _gpg_raise_exception (err_status); } @@ -761,11 +761,11 @@ _gpg_interact_cb(void *opaque, const char *keyword, goto leave; } - if (write(fd, buffer, size) < 0) { + if (gpgme_io_writen (fd, buffer, size) < 0) { err_status = gpgme_error_from_syserror (); _gpg_raise_exception (err_status); } - if (! err_status && write(fd, "\n", 1) < 0) { + if (! err_status && gpgme_io_writen (fd, "\n", 1) < 0) { err_status = gpgme_error_from_syserror (); _gpg_raise_exception (err_status); } diff --git a/lang/python/helpers.h b/lang/python/helpers.h index 61f538e2..e9faa7cf 100644 --- a/lang/python/helpers.h +++ b/lang/python/helpers.h @@ -25,11 +25,6 @@ #include <gpgme.h> #include "Python.h" -#ifdef _WIN32 -#include <windows.h> -#define write(fd, str, sz) {DWORD written; WriteFile((HANDLE) fd, str, sz, &written, 0);} -#endif - /* Flag specifying whether this is an in-tree build. */ extern int gpg_in_tree_build; |