From: Alain Bench Date: Mon, 30 Apr 2007 02:10:20 +0000 (-0700) Subject: contrib/smime.rc: $smime_verify_opaque_command fallback to -noverify X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a954d88060a62957b407893426b4fd6082947486;p=neomutt contrib/smime.rc: $smime_verify_opaque_command fallback to -noverify to get signed text despite a failed -verify (but send only this first failure notice to stderr). smime.c: fflush() before rewind(). Closes #2428. Helps Debian Bug 420014 --- diff --git a/contrib/smime.rc b/contrib/smime.rc index 635496b8c..53760899b 100644 --- a/contrib/smime.rc +++ b/contrib/smime.rc @@ -79,7 +79,9 @@ set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f" # Verify a signature of type application/x-pkcs7-mime -set smime_verify_opaque_command="openssl smime -verify -inform DER -in %s %C" +set smime_verify_opaque_command="\ +openssl smime -verify -inform DER -in %s %C || \ +openssl smime -verify -inform DER -in %s -noverify 2>/dev/null" diff --git a/smime.c b/smime.c index 77f7fd824..437b62fb8 100644 --- a/smime.c +++ b/smime.c @@ -859,8 +859,8 @@ static int smime_handle_cert_email (char *certificate, char *mailbox, fflush (fpout); rewind (fpout); - rewind (fperr); fflush (fperr); + rewind (fperr); while ((fgets (email, sizeof (email), fpout))) @@ -954,8 +954,8 @@ static char *smime_extract_certificate (char *infile) fflush (fpout); rewind (fpout); - rewind (fperr); fflush (fperr); + rewind (fperr); empty = (fgetc (fpout) == EOF); if (empty) { @@ -1000,8 +1000,8 @@ static char *smime_extract_certificate (char *infile) fflush (fpout); rewind (fpout); - rewind (fperr); fflush (fperr); + rewind (fperr); empty = (fgetc (fpout) == EOF); if (empty) { @@ -1063,8 +1063,8 @@ static char *smime_extract_signer_certificate (char *infile) fflush (fpout); rewind (fpout); - rewind (fperr); fflush (fperr); + rewind (fperr); empty = (fgetc (fpout) == EOF); if (empty) { @@ -1750,6 +1750,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile) if (s->flags & M_DISPLAY) { + fflush (smimeerr); rewind (smimeerr); if ((c = fgetc (smimeerr)) != EOF)