]> err.no Git - varnish/commitdiff
From the "What has the world come to ?" department:
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 15 Jul 2007 11:25:27 +0000 (11:25 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 15 Jul 2007 11:25:27 +0000 (11:25 +0000)
It used to be that sscanf(3) would walk along the proffered string
and do what the format string was told, and as long as the format
terminated before the input string, the NUL termination was not
relevant.

Sometime in the last 20 years, sscanf started doing a strlen on the
passed argument changing this behaviour.

Give sscanf the NUL it wants.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1705 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/lib/libvarnish/cli_common.c

index 756f3fd827224fb95050055a67a9ec4dab1cd3d4..1e17b5b6778d9fad2759b1a8ca55eac4768963ff 100644 (file)
@@ -154,6 +154,7 @@ cli_readres(int fd, unsigned *status, char **ptr, double tmo)
        assert(i == CLI_LINE0_LEN);
        assert(res[3] == ' ');
        assert(res[CLI_LINE0_LEN - 1] == '\n');
+       res[CLI_LINE0_LEN - 1] = '\0';
        j = sscanf(res, "%u %u\n", &u, &v);
        assert(j == 2);
        if (status != NULL)