[gnutls-dev] gnutls 1.7.17 and greater do not work with mutt anymore

Simon Josefsson simon at josefsson.org
Mon Aug 27 16:07:41 CEST 2007


Andreas Metzler <ametzler at downhill.at.eu.org> writes:

> The patch below seems to have *triggered* it, reverting it makes
> 1.7.1[78] work. The 1mio$question is probably what causes an unknown
> error (code seems to be 21) in the first place.

The problem was that gnutls_error_is_fatal was called with a positive
value.  This probably indicates a mutt bug (investigation appreciated),
but it seems like a safe approach to apply the patch below so I did
that.

I'll roll a new rc-release soon.

/Simon

commit 1d12c895fda4a65071dbfcc1f1fa3c9abce24686
Author: Simon Josefsson <simon at josefsson.org>
Date:   Mon Aug 27 16:04:57 2007 +0200

    Doc fix.

diff --git a/lib/gnutls_errors.c b/lib/gnutls_errors.c
index 150e23a..2c8afd4 100644
--- a/lib/gnutls_errors.c
+++ b/lib/gnutls_errors.c
@@ -265,6 +265,8 @@ static const gnutls_error_entry error_algorithms[] = {
   * This is only useful if you are dealing with errors from the
   * record layer or the handshake layer.
   *
+  * For positive @error values, 0 is returned.
+  *
   **/
 int
 gnutls_error_is_fatal (int error)

commit fc9a8c420d86c226442f4f8c8cb9b6f4e29e47f2
Author: Simon Josefsson <simon at josefsson.org>
Date:   Mon Aug 27 15:59:51 2007 +0200

    Have gnutls_error_is_fatal return 0 on positive "errors".
    Would fix bug reported by Andreas Metzler
    <ametzler at downhill.at.eu.org> in
    <http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/2293
    see also <http://bugs.debian.org/439640>.

diff --git a/lib/gnutls_errors.c b/lib/gnutls_errors.c
index 0e28275..150e23a 100644
--- a/lib/gnutls_errors.c
+++ b/lib/gnutls_errors.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
+ * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation
  *
  * Author: Nikos Mavroyanopoulos
  *
@@ -271,7 +271,13 @@ gnutls_error_is_fatal (int error)
 {
   int ret = 1;
 
+  /* Input sanitzation.  Positive values are not errors at all, and
+     definitely not fatal. */
+  if (error > 0)
+    return 0;
+
   GNUTLS_ERROR_ALG_LOOP (ret = p->fatal);
+
   return ret;
 }
 



More information about the Gnutls-dev mailing list