Subject: Re: bug#20908: 25.0.50; gnutls-negotiate error "Invalid format operation %u"

From: Eli Zaretskii <[email-masked]>
Date: Sat, 27 Jun 2015 11:05:19 +0300

> From: lo2net <[email-masked]>
> Date: Sat, 27 Jun 2015 11:55:43 +0800
> 
> I've got a problem: when using (gnutls-negotiate :verify-error t) to initialize a SSL/TLS
> connection , server has an expired certificate cause gnutls-boot signal
> an error "Invalid format operation %u", apparently it's not related to
> gnutls-error. So digging into the source
> code, here is the error signal:
> 
> src/gnutls.c:1511
> 
>       if (verify_error_all
>           || !NILP (Fmember (QCgnutls_bootprop_trustfiles, verify_error)))
>         {
> 	  emacs_gnutls_deinit (proc);
> 	  error ("Certificate validation failed %s, verification code %u",
> 		 c_hostname, peer_verification);
>         }
> 
> After checking elisp manual and source code, function Fformat(error call
> it to format string) does not
> support '%u', here should using '%d' instead.
> 
> I made a simple patch for this:

Thanks.  I used %x instead of %d in the change I just pushed, because
the peer_verification value is actually a bitwise OR of the various
bits, so displaying it in hex will make its interpretation easier.

With that, I'm marking this bug done.