aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2023-05-23 13:52:25 +0000
committerWerner Koch <[email protected]>2023-05-23 13:52:25 +0000
commit36a68bc5308c0b4a541ca6adea5d3635217e8af2 (patch)
tree13c0878eb820bfbe64d049acfcec86b0cab2ac78
parentbuild: Sync to libtool from libgpg-error for 64-bit Windows. (diff)
downloadgpgme-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.c10
-rw-r--r--lang/python/helpers.h5
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;