[syslog-ng]Config file parsing inconsistencies

Balazs Scheidler syslog-ng@lists.balabit.hu
Thu, 15 Apr 2004 09:42:17 +0200


2004-04-14, sze keltezéssel 22:22-kor John Kristoff ezt írta:
> I seem to have discovered some discrepancies in the parsing of config
> file statements.  I'm using syslog-ng 1.6.2.  For example, the following:
> 
>   destination test   { udp("10.0.0.1" port(514) localport(0)); };
> 
> results in a segfault upon startup, whereas the following:
> 
>   destination test   { udp("10.0.0.1" port(514) localport("0")); };
> 
> works fine.  I haven't gone searching through the code yet, but it seems
> that parsing of options is inconsisent (note 514 is not in quotes).  A
> brief grep of some source files seems to suggest that there might be a
> inconsistencies on when to parse the option as a number versus a string.

the parser should accept both string and number cases and it really
does, but there was a problem when the value specified as string was
equal to '0'. This patch fixes it (and will be included in tomorrow's
snapshot)

diff -u -r1.25.4.1 afinet.c
--- src/afinet.c        13 Jan 2004 18:08:02 -0000      1.25.4.1
+++ src/afinet.c        15 Apr 2004 07:40:59 -0000
@@ -59,7 +59,7 @@
        CAST(inet_address_info, addr, *a);
        struct servent *srv;
  
-       if (!port) {
+       if (!port && service && proto) {
                if ((srv = getservbyname(service, proto))) {
                        port=srv->s_port;
                }

-- 
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1