]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Sanitize input via the control socket a little better.
authorRoy Marples <roy@marples.name>
Wed, 13 Aug 2014 23:31:23 +0000 (23:31 +0000)
committerRoy Marples <roy@marples.name>
Wed, 13 Aug 2014 23:31:23 +0000 (23:31 +0000)
Thanks to Tobias Stoeckmann.

control.c

index e043ccd81c1544d6a78fe53b57293ea9f7ee86ed..399ee1211bc32c2b0c6fa3692e1010d338e5b63b 100644 (file)
--- a/control.c
+++ b/control.c
@@ -88,18 +88,19 @@ control_handle_data(void *arg)
                ap = argvp;
                while (p < e) {
                        argc++;
-                       if ((size_t)argc > sizeof(argvp)) {
+                       if ((size_t)argc >= sizeof(argvp) / sizeof(argvp[0])) {
                                errno = ENOBUFS;
                                return;
                        }
                        a = *ap++ = p;
                        len = strlen(p);
                        p += len + 1;
-                       if (a[len - 1] == '\n') {
+                       if (len && a[len - 1] == '\n') {
                                a[len - 1] = '\0';
                                break;
                        }
                }
+               *ap = NULL;
                dhcpcd_handleargs(l->ctx, l, argc, argvp);
        }
 }