https://bugs.exim.org/show_bug.cgi?id=2501

--- Comment #8 from [email protected] ---
Ahh, it's reproducible when the following authenticator-name contains an
underscore-character (_) and/or the word "cram" standing alone:

Fails:

  1 gssapi_auth:$
  2    driver = heimdal_gssapi$
  3    public_name = GSSAPI$
  4    server_keytab = /etc/exim4/krb5.keytab$
  5 $
  6 cram_md5:$
  7    driver = cram_md5$
  8    public_name = CRAM-MD5$

Fails too:

  1 gssapi_auth:$
  2    driver = heimdal_gssapi$
  3    public_name = GSSAPI$
  4    server_keytab = /etc/exim4/krb5.keytab$
  5 $
  6 cram:$
  7    driver = cram_md5$
  8    public_name = CRAM-MD5$



Works:

  1 gssapi_auth:$
  2    driver = heimdal_gssapi$
  3    public_name = GSSAPI$
  4    server_keytab = /etc/exim4/krb5.keytab$
  5 $
  6 cramba:$
  7    driver = cram_md5$
  8    public_name = CRAM-MD5$




Fails:

  1 gssapi_auth:$
  2    driver = heimdal_gssapi$
  3    public_name = GSSAPI$
  4    server_keytab = /etc/exim4/krb5.keytab$
  5 $
  6 cram_foobar:$
  7    driver = cram_md5$
  8    public_name = CRAM-MD5$


Fails too:

  1 gssapi_auth:$
  2    driver = heimdal_gssapi$
  3    public_name = GSSAPI$
  4    server_keytab = /etc/exim4/krb5.keytab$
  5 $
  6 foo_bar:$
  7    driver = cram_md5$
  8    public_name = CRAM-MD5$


So something seems to confuse the parser after it has handled the GSSAPI
authenticator.

The characters that then lead to extra-characters-follow-driver seems to be
just random memory content.

***>>> after line ''
***>>> got line '= heimdal_gssapi'
***>>> got line '= GSSAPI'
***>>> got line '= /etc/exim4/krb5.keytab'
***>>> got line ':'
***>>> before line '����~'
***>>> after line '����~'
***>>> found extra characters '����~'
2019-12-23 14:30:51 Exim configuration error in line 904 of
/var/lib/exim4/config.autogenerated.tmp:
  extra characters follow driver name cram_md5






Index: exim4-4.93/src/readconf.c
===================================================================
--- exim4-4.93.orig/src/readconf.c
+++ exim4-4.93/src/readconf.c
@@ -3781,6 +3781,8 @@ while ((buffer = get_config_line()) != N

   s = readconf_readname(name, sizeof(name), buffer);

+  fprintf(stderr, "***>>> got line '%s'\n", s);
+  
   /* Handle macro definition, first finishing off the initialization of the
   previous driver, if any. */

@@ -3837,8 +3839,13 @@ while ((buffer = get_config_line()) != N

     /* Check nothing more on this line, then do the next loop iteration. */

+    fprintf(stderr, "***>>> before line '%s'\n", s);
     while (isspace(*s)) s++;
-    if (*s != 0) extra_chars_error(s, US"driver name ", name, US"");
+    fprintf(stderr, "***>>> after line '%s'\n", s);
+    if (*s != 0) {
+        fprintf(stderr, "***>>> found extra characters '%s'\n", s);
+        extra_chars_error(s, US"driver name ", name, US"");
+    }
     continue;
     }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to