2005-05-05 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 5 May 2005 12:00:11 +0000 (12:00 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 5 May 2005 12:00:11 +0000 (12:00 +0000)
* data-user.c (user_release): Only call user hook if provided.
(user_seek): Return EBADF if no user hook is provided.
(user_read): Likewise.
(user_write): Likewise.

trunk/gpgme/ChangeLog
trunk/gpgme/data-user.c

index 275db84b9797e5e3a2a65150dace7439c8476b49..98f81a022d754fe501e1e72460704beb293affdd 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       * data-user.c (user_release): Only call user hook if provided.
+       (user_seek): Return EBADF if no user hook is provided.
+       (user_read): Likewise.
+       (user_write): Likewise.
+
 2005-04-28  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpgme.h (GPGME_INCLUDE_CERTS_DEFAULT): New macro.
index 8a71b885bf8da1bdd9005f2b4cb3edab14bbd7b6..cfd310529989cb96f67808ab7b796562e45e314a 100644 (file)
@@ -30,6 +30,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 +40,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 +50,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 +60,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);
 }