revert bogus patch part.
authorPierre Habouzit <madcoder@debian.org>
Fri, 24 Nov 2006 23:47:26 +0000 (00:47 +0100)
committerPierre Habouzit <madcoder@debian.org>
Fri, 24 Nov 2006 23:47:26 +0000 (00:47 +0100)
lib-crypt/smime.c

index 0cc5cbc..82750c6 100644 (file)
@@ -965,6 +965,7 @@ static char *smime_extract_signer_certificate (char *infile)
   char pk7out[_POSIX_PATH_MAX], certfile[_POSIX_PATH_MAX];
   char tmpfname[_POSIX_PATH_MAX];
   pid_t thepid;
+  int empty;
 
   fperr = m_tempfile (tmpfname, sizeof(tmpfname), NONULL(Tempdir), NULL);
   if (!fperr) {
@@ -980,8 +981,6 @@ static char *smime_extract_signer_certificate (char *infile)
     return NULL;
   }
 
-  fclose (fpout);
-
   /* Extract signer's certificate
    */
   if ((thepid = smime_invoke (NULL, NULL, NULL,
@@ -991,6 +990,7 @@ static char *smime_extract_signer_certificate (char *infile)
     mutt_any_key_to_continue (_
                               ("Error: unable to create OpenSSL subprocess!"));
     fclose (fperr);
+    fclose (fpout);
     mutt_unlink (pk7out);
     mutt_unlink (certfile);
     return NULL;
@@ -998,15 +998,25 @@ static char *smime_extract_signer_certificate (char *infile)
 
   mutt_wait_filter (thepid);
 
+  fflush (fpout);
+  rewind (fpout);
   rewind (fperr);
   fflush (fperr);
+  empty = (fgetc (fpout) == EOF);
+  if (empty) {
+    mutt_endwin (NULL);
+    mutt_copy_stream (fperr, stdout);
+    mutt_any_key_to_continue (NULL);
+    fclose (fpout);
+    fclose (fperr);
+    mutt_unlink (certfile);
+    return NULL;
+  }
 
-  mutt_endwin (NULL);
-  mutt_copy_stream (fperr, stdout);
+  fclose (fpout);
   fclose (fperr);
-  mutt_any_key_to_continue (NULL);
-  mutt_unlink (certfile);
-  return NULL;
+
+  return m_strdup(certfile);
 }
 
 /* Add a certificate and update index file (externally). */