aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-06-22 10:29:59 +0000
committerWerner Koch <[email protected]>2021-06-22 10:29:59 +0000
commitaf2fd9f0af25e1f95d9484f7d2125cd9888aa308 (patch)
tree847aef6748d363a9e28fe5afef5d009cab47735f
parentw32: Add fallback in case the Windows console can't cope with Unicode. (diff)
downloadgnupg-af2fd9f0af25e1f95d9484f7d2125cd9888aa308.tar.gz
gnupg-af2fd9f0af25e1f95d9484f7d2125cd9888aa308.zip
tests: Cope with broken Libgcrypt versions
* common/t-sexputil.c (test_ecc_uncompress): Ignore unknwon curve errors. -- For unknown reasons some versions of Fedora or RHEL provide a patched version of Libgcrypt with Brainpool support removed. We better ignore this error because it is a regression in 2.2.28 although that older versions could not used Brainpool keys. GnuPG-bug-id: 5502 Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--common/t-sexputil.c38
1 files changed, 27 insertions, 11 deletions
diff --git a/common/t-sexputil.c b/common/t-sexputil.c
index a1a9d89bb..8da97609d 100644
--- a/common/t-sexputil.c
+++ b/common/t-sexputil.c
@@ -460,17 +460,33 @@ test_ecc_uncompress (void)
if (bbuf)
{
err = uncompress_ecc_q_in_canon_sexp (bbuf, bbuflen, &rbuf, &rbuflen);
- if (err)
- fail2 (idx,err);
- if (!rbuf)
- fail (idx); /* Not converted despite a need for it. */
-
- /* log_printcanon (" orig:", abuf, abuflen); */
- /* log_printcanon (" comp:", bbuf, bbuflen); */
- /* log_printcanon ("uncomp:", rbuf, rbuflen); */
-
- if (rbuflen != abuflen || memcmp (rbuf, abuf, abuflen))
- fail (idx);
+ if (gpg_err_code (err) == GPG_ERR_UNKNOWN_CURVE)
+ {
+ static int shown;
+ fprintf (stderr, "%s:%d: test %d failed: %s - ignored\n",
+ __FILE__,__LINE__, idx, gpg_strerror (err));
+ if (!shown)
+ {
+ shown = 1;
+ fprintf (stderr, "This is likely due to a patched"
+ " version of Libgcrypt with removed support"
+ " for Brainpool curves\n");
+ }
+ }
+ else
+ {
+ if (err)
+ fail2 (idx,err);
+ if (!rbuf)
+ fail (idx); /* Not converted despite a need for it. */
+
+ /* log_printcanon (" orig:", abuf, abuflen); */
+ /* log_printcanon (" comp:", bbuf, bbuflen); */
+ /* log_printcanon ("uncomp:", rbuf, rbuflen); */
+
+ if (rbuflen != abuflen || memcmp (rbuf, abuf, abuflen))
+ fail (idx);
+ }
}
xfree (abuf);