* engine-gpgsm.c (gpgsm_import): Return an error for unknown data
authorWerner Koch <wk@gnupg.org>
Tue, 7 Jul 2009 12:38:18 +0000 (12:38 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 7 Jul 2009 12:38:18 +0000 (12:38 +0000)
encodings.

src/ChangeLog
src/engine-gpgsm.c

index 56a215d9d03f5963f7b67ebe1eabfa59069f60fb..eca549aa3f06bf1ca52b375cccdd81c0bb2d347d 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-07  Werner Koch  <wk@g10code.com>
+
+       * engine-gpgsm.c (gpgsm_import): Return an error for unknown data
+       encodings.
+
 2009-06-22  Marcus Brinkmann  <marcus@g10code.de>
 
        * debug.h: Everywhere, use %p instead of 0x%x to print pointer.
index 71ef221ba42510a3d33b8b3af8e1fc60b3711bec..52915d36a5f6c78d33a7a5a2b4f18c83660b5ce6 100644 (file)
@@ -1544,6 +1544,7 @@ gpgsm_import (void *engine, gpgme_data_t keydata, gpgme_key_t *keyarray)
 {
   engine_gpgsm_t gpgsm = engine;
   gpgme_error_t err;
+  gpgme_data_encoding_t dataenc;
 
   if (!gpgsm)
     return gpg_error (GPG_ERR_INV_VALUE);
@@ -1551,10 +1552,18 @@ gpgsm_import (void *engine, gpgme_data_t keydata, gpgme_key_t *keyarray)
   if (keydata && keyarray)
     gpg_error (GPG_ERR_INV_VALUE); /* Only one is allowed.  */
 
+  dataenc = gpgme_data_get_encoding (keydata);
+
   if (keyarray)
     {
       return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
     }
+  else if (dataenc == GPGME_DATA_ENCODING_URL
+           || dataenc == GPGME_DATA_ENCODING_URL0
+           || dataenc == GPGME_DATA_ENCODING_URLESC)
+    {
+      return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+    }
   else
     {
       gpgsm->input_cb.data = keydata;