netfilter: nf_log: fix uninit read in nf_log_proc_dostring
authorJann Horn <jannh@google.com>
Wed, 20 Jun 2018 16:33:45 +0000 (18:33 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 26 Jun 2018 14:48:23 +0000 (16:48 +0200)
When proc_dostring() is called with a non-zero offset in strict mode, it
doesn't just write to the ->data buffer, it also reads. Make sure it
doesn't read uninitialized data.

Fixes: c6ac37d8d884 ("netfilter: nf_log: fix error on write NONE to [...]")
Signed-off-by: Jann Horn <jannh@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_log.c

index 4264570475788be388e603c1bc70330c812d0eb3..2c47f9ec35117c73a8add4724ca8db5f0e50f0ec 100644 (file)
@@ -424,6 +424,10 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
        if (write) {
                struct ctl_table tmp = *table;
 
+               /* proc_dostring() can append to existing strings, so we need to
+                * initialize it as an empty string.
+                */
+               buf[0] = '\0';
                tmp.data = buf;
                r = proc_dostring(&tmp, write, buffer, lenp, ppos);
                if (r)