Just did an apt-get source glibc, and in the diff, I found the following code snippet, in glibc-2.7/debian/patches/any/local- bindresvport_blacklist.diff , in sunrpc/bindrsvprt.c , which seems to be meant to parse one line:
++ tmp = strchr (cp, '#'); /* remove comments */ ++ if (tmp) ++ *tmp = '\0'; ++ while (isspace ((int)*cp)) /* remove spaces and tabs */ ++ ++cp; ++ if (*cp == '\0') /* ignore empty lines */ ++ continue; ++ if (cp[strlen (cp) - 1] == '\n') ++ cp[strlen (cp) - 1] = '\0'; ++ ++ port = strtoul (cp, &tmp, 0); ++ if (*tmp != '\0' || (port == ULONG_MAX && errno == ERANGE)) ++ continue; It seems to: 1. Remove comments 2. Remove _leading_ spaces 3. Ignore empty lines 4. Remove final newline 5. Parse the number 6. ... but then _check_ whether the line finishes right after the number, by comparing the tmp pointer "returned" by strtoul with '\0'. The point 6 has to go. Or if we want to keep some sanity checking, maybe there should be a "while (isspace ((int)*tmp)) ++tmp; /* remove spaces and tabs */" line between the strtoul and the check for *tmp != '\0' -- "Syntax error" in default bindresvport.blacklist https://bugs.launchpad.net/bugs/306007 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs