https://bugs.exim.org/show_bug.cgi?id=2501
--- Comment #8 from unki@??? ---
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.