aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/data-user.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpgme/data-user.c')
-rw-r--r--gpgme/data-user.c13
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);
}