improce memory handling
authorKarl-Heinz Zimmer <khz@kde.org>
Thu, 13 Dec 2001 15:13:09 +0000 (15:13 +0000)
committerKarl-Heinz Zimmer <khz@kde.org>
Thu, 13 Dec 2001 15:13:09 +0000 (15:13 +0000)
gpgmeplug/gpgmeplug.c

index 1fc88016ebc80a60cf601def09527810e539067d..42b84384c5503d279aabd2008f6364f912d1aab0 100644 (file)
@@ -951,7 +951,7 @@ bool encryptMessage( const char* cleartext,
     // untrusted key (oder gar keiner) gefunden wurde, verweigert gpg
     // das signieren.
   }
-  
+
   gpgme_release (ctx);
 
   return bOk;
@@ -966,11 +966,12 @@ bool decryptMessage( const char* ciphertext,
                      const char** cleartext,
                      const char* certificate )
 {
-    GpgmeCtx ctx;
-    GpgmeData gCiphertext, gPlaintext;
-    size_t rCLen;
-    char*  rCiph = 0;
-    bool bOk = false;
+  GpgmeCtx ctx;
+  GpgmeError err;
+  GpgmeData gCiphertext, gPlaintext;
+  size_t rCLen = 0;
+  char*  rCiph = 0;
+  bool bOk = false;
 
 
 
@@ -984,6 +985,19 @@ bool decryptMessage( const char* ciphertext,
   struct passphrase_cb_info_s info;
 
 
+
+
+
+  if( !ciphertext )
+    return false;
+
+  err = gpgme_new (&ctx);
+  gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL);
+
+
+
+
+
 /*
   temporary code!!
 
@@ -999,28 +1013,28 @@ bool decryptMessage( const char* ciphertext,
 
 
 
-    gpgme_new( &ctx );
-    gpgme_data_new_from_mem( &gCiphertext, ciphertext,
-                             1+strlen( ciphertext ), 1 );
-    gpgme_data_new( &gPlaintext );
 
-    gpgme_op_decrypt( ctx, gCiphertext, gPlaintext );
-    gpgme_data_release( gCiphertext );
+  gpgme_data_new_from_mem( &gCiphertext, ciphertext,
+                           1+strlen( ciphertext ), 1 );
+  gpgme_data_new( &gPlaintext );
 
-    rCiph = gpgme_data_release_and_get_mem( gPlaintext,  &rCLen );
+  gpgme_op_decrypt( ctx, gCiphertext, gPlaintext );
+  gpgme_data_release( gCiphertext );
 
-    *cleartext = malloc( rCLen + 1 );
-    if( *cleartext ) {
-        if( rCLen ) {
-            bOk = true;
-            strncpy((char*)*cleartext, rCiph, rCLen );
-        }
-        ((char*)(*cleartext))[rCLen] = 0;
-    }
+  rCiph = gpgme_data_release_and_get_mem( gPlaintext,  &rCLen );
 
-    free( rCiph );
-    gpgme_release( ctx );
-    return bOk;
+  *cleartext = malloc( rCLen + 1 );
+  if( *cleartext ) {
+      if( rCLen ) {
+          bOk = true;
+          strncpy((char*)*cleartext, rCiph, rCLen );
+      }
+      ((char*)(*cleartext))[rCLen] = 0;
+  }
+
+  free( rCiph );
+  gpgme_release( ctx );
+  return bOk;
 }
 
 bool decryptAndCheckMessage( const char* ciphertext,