Corrected code status error from previous wrong CVS comits
authorKarl-Heinz Zimmer <khz@kde.org>
Thu, 6 Dec 2001 16:59:09 +0000 (16:59 +0000)
committerKarl-Heinz Zimmer <khz@kde.org>
Thu, 6 Dec 2001 16:59:09 +0000 (16:59 +0000)
gpgmeplug/gpgmeplug.c

index 4d182bab9ef6a8d0c789dfe322ae6cb3bc130fbc..d94348cbc3d1fc7c2e2e636c31136b60beef5af4 100644 (file)
@@ -845,10 +845,12 @@ bool checkMessageSignature( const char* ciphertext,
     /* Provide information in the sigmeta struct */
     /* the status string */
     statusStr = sig_status_to_string( status );
-    // PENDING(kalle) Handle out of memory
     sigmeta->status = malloc( strlen( statusStr ) + 1 );
-    strcpy( sigmeta->status, statusStr );
-    sigmeta->status[strlen( statusStr )] = '\0';
+    if( sigmeta->status ) {
+        strcpy( sigmeta->status, statusStr );
+        sigmeta->status[strlen( statusStr )] = '\0';
+    } else
+        ; // nothing to do, is already 0
 
     // Extended information for any number of signatures.
     fpr = gpgme_get_sig_status( ctx, sig_idx, &status, &created );
@@ -857,27 +859,35 @@ bool checkMessageSignature( const char* ciphertext,
         struct tm* ctime_val;
         const char* sig_status;
 
-        // PENDING(kalle) Handle out of memory
-        sigmeta->extended_info = realloc( sigmeta->extended_info,
-                                          sizeof( struct SignatureMetaDataExtendedInfo ) * ( sig_idx + 1 ) );
-        // the creation time
-        // PENDING(kalle) Handle out of memory
-        sigmeta->extended_info[sig_idx].creation_time = malloc( sizeof( struct tm ) );
-        ctime_val = localtime( &created );
-        memcpy( sigmeta->extended_info[sig_idx].creation_time,
-                ctime_val, sizeof( struct tm ) );
-
-        err = gpgme_get_sig_key (ctx, sig_idx, &key);
-        sig_status = sig_status_to_string( status );
-        // PENDING(kalle) Handle out of memory
-        sigmeta->extended_info[sig_idx].status_text = malloc( strlen( sig_status ) + 1 );
-        strcpy( sigmeta->extended_info[sig_idx].status_text,
-                sig_status );
-        sigmeta->extended_info[sig_idx].status_text[strlen( sig_status )] = '\0';
-        // PENDING(kalle) Handle out of memory
-        sigmeta->extended_info[sig_idx].fingerprint = malloc( strlen( fpr ) + 1 );
-        strcpy( sigmeta->extended_info[sig_idx].fingerprint, fpr );
-        sigmeta->extended_info[sig_idx].fingerprint[strlen( fpr )] = '\0';
+        void* realloc_return = realloc( sigmeta->extended_info,
+                                        sizeof( struct SignatureMetaDataExtendedInfo ) * ( sig_idx + 1 ) );
+        if( realloc_return ) {
+            sigmeta->extended_info = realloc_return;
+            // the creation time
+            sigmeta->extended_info[sig_idx].creation_time = malloc( sizeof( struct tm ) );
+            if( sigmeta->extended_info[sig_idx].creation_time ) {
+                ctime_val = localtime( &created );
+                memcpy( sigmeta->extended_info[sig_idx].creation_time,
+                        ctime_val, sizeof( struct tm ) );
+            }
+
+            err = gpgme_get_sig_key (ctx, sig_idx, &key);
+            sig_status = sig_status_to_string( status );
+            sigmeta->extended_info[sig_idx].status_text = malloc( strlen( sig_status ) + 1 );
+            if( sigmeta->extended_info[sig_idx].status_text ) {
+                strcpy( sigmeta->extended_info[sig_idx].status_text,
+                    sig_status );
+                sigmeta->extended_info[sig_idx].status_text[strlen( sig_status )] = '\0';
+            }
+
+            sigmeta->extended_info[sig_idx].fingerprint = malloc( strlen( fpr ) + 1 );
+            if( sigmeta->extended_info[sig_idx].fingerprint ) {
+                strcpy( sigmeta->extended_info[sig_idx].fingerprint, fpr );
+                sigmeta->extended_info[sig_idx].fingerprint[strlen( fpr )] = '\0';
+            }
+        } else
+            break; // if allocation fails once, it isn't likely to
+                   // succeed the next time either
 
         fpr = gpgme_get_sig_status (ctx, ++sig_idx, &status, &created);
     }
@@ -941,7 +951,7 @@ bool encryptMessage( const char* cleartext,
     // untrusted key (oder gar keiner) gefunden wurde, verweigert gpg
     // das signieren.
   }
-
+  
   gpgme_release (ctx);
 
   return bOk;