diff options
Diffstat (limited to 'gpgme/data-user.c')
-rw-r--r-- | gpgme/data-user.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gpgme/data-user.c b/gpgme/data-user.c index 8a71b885..f3deb32f 100644 --- a/gpgme/data-user.c +++ b/gpgme/data-user.c @@ -23,6 +23,7 @@ #endif #include <sys/types.h> +#include <errno.h> #include "data.h" @@ -30,6 +31,9 @@ static ssize_t user_read (gpgme_data_t dh, void *buffer, size_t size) { + if (!dh->data.user.cbs->read) + return EBADF; + return (*dh->data.user.cbs->read) (dh->data.user.handle, buffer, size); } @@ -37,6 +41,9 @@ user_read (gpgme_data_t dh, void *buffer, size_t size) static ssize_t user_write (gpgme_data_t dh, const void *buffer, size_t size) { + if (!dh->data.user.cbs->write) + return EBADF; + return (*dh->data.user.cbs->write) (dh->data.user.handle, buffer, size); } @@ -44,6 +51,9 @@ user_write (gpgme_data_t dh, const void *buffer, size_t size) static off_t user_seek (gpgme_data_t dh, off_t offset, int whence) { + if (!dh->data.user.cbs->seek) + return EBADF; + return (*dh->data.user.cbs->seek) (dh->data.user.handle, offset, whence); } @@ -51,7 +61,8 @@ user_seek (gpgme_data_t dh, off_t offset, int whence) static void user_release (gpgme_data_t dh) { - (*dh->data.user.cbs->release) (dh->data.user.handle); + if (dh->data.user.cbs->release) + (*dh->data.user.cbs->release) (dh->data.user.handle); } |