]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg: normalize strncpy/snprintf usage
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 14 Feb 2018 22:21:11 +0000 (23:21 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 14 Feb 2018 22:21:11 +0000 (23:21 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/ipc.c
src/set.c
src/setconf.c
src/show.c

index 7223fd7ae94b3dfa2fc3044a114a46b5fadfc38c..edc8e8fcbffeb9f4c4ba1d281094e4c16acf754a 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -114,7 +114,7 @@ static FILE *userspace_interface_file(const char *interface)
        ret = -EINVAL;
        if (strchr(interface, '/'))
                goto out;
-       ret = snprintf(addr.sun_path, sizeof(addr.sun_path) - 1, SOCK_PATH "%s" SOCK_SUFFIX, interface);
+       ret = snprintf(addr.sun_path, sizeof(addr.sun_path), SOCK_PATH "%s" SOCK_SUFFIX, interface);
        if (ret < 0)
                goto out;
        ret = stat(addr.sun_path, &sbuf);
@@ -155,7 +155,7 @@ static bool userspace_has_wireguard_interface(const char *interface)
 
        if (strchr(interface, '/'))
                return false;
-       if (snprintf(addr.sun_path, sizeof(addr.sun_path) - 1, SOCK_PATH "%s" SOCK_SUFFIX, interface) < 0)
+       if (snprintf(addr.sun_path, sizeof(addr.sun_path), SOCK_PATH "%s" SOCK_SUFFIX, interface) < 0)
                return false;
        if (stat(addr.sun_path, &sbuf) < 0)
                return false;
@@ -834,8 +834,10 @@ static int parse_device(const struct nlattr *attr, void *data)
                        device->ifindex = mnl_attr_get_u32(attr);
                break;
        case WGDEVICE_A_IFNAME:
-               if (!mnl_attr_validate(attr, MNL_TYPE_STRING))
+               if (!mnl_attr_validate(attr, MNL_TYPE_STRING)) {
                        strncpy(device->name, mnl_attr_get_str(attr), sizeof(device->name) - 1);
+                       device->name[sizeof(device->name) - 1] = '\0';
+               }
                break;
        case WGDEVICE_A_PRIVATE_KEY:
                if (mnl_attr_get_payload_len(attr) == sizeof(device->private_key)) {
index 7f9374d2c27bca5fee238b98d35337571b2a4da2..b3f57effe3323961fb0a523a8f3445d3739dea1e 100644 (file)
--- a/src/set.c
+++ b/src/set.c
@@ -26,7 +26,7 @@ int set_main(int argc, char *argv[])
        if (!device)
                goto cleanup;
        strncpy(device->name, argv[1], IFNAMSIZ -  1);
-       device->name[IFNAMSIZ - 1] = 0;
+       device->name[IFNAMSIZ - 1] = '\0';
 
        if (ipc_set_device(device) != 0) {
                perror("Unable to set device");
index b5b3cfb1267b4e1612a39f3bdb8ad2c4018188e7..f146a48591d2b640bb26b001b0f1a4573b0dd0bf 100644 (file)
@@ -48,7 +48,7 @@ int setconf_main(int argc, char *argv[])
                goto cleanup;
        }
        strncpy(device->name, argv[1], IFNAMSIZ - 1);
-       device->name[IFNAMSIZ - 1] = 0;
+       device->name[IFNAMSIZ - 1] = '\0';
 
        if (ipc_set_device(device) != 0) {
                perror("Unable to set device");
index 0574a78a696d72fb6ecc956744e3198d40f4003c..3fd6a6758f6b28c93da01216f29008453bbed76f 100644 (file)
@@ -117,10 +117,11 @@ static char *endpoint(const struct sockaddr *addr)
                addr_len = sizeof(struct sockaddr_in6);
 
        ret = getnameinfo(addr, addr_len, host, sizeof(host), service, sizeof(service), NI_DGRAM | NI_NUMERICSERV | NI_NUMERICHOST);
-       if (ret)
+       if (ret) {
                strncpy(buf, gai_strerror(ret), sizeof(buf) - 1);
-       else
-               snprintf(buf, sizeof(buf) - 1, (addr->sa_family == AF_INET6 && strchr(host, ':')) ? "[%s]:%s" : "%s:%s", host, service);
+               buf[sizeof(buf) - 1] = '\0';
+       } else
+               snprintf(buf, sizeof(buf), (addr->sa_family == AF_INET6 && strchr(host, ':')) ? "[%s]:%s" : "%s:%s", host, service);
        return buf;
 }
 
@@ -139,15 +140,15 @@ static size_t pretty_time(char *buf, const size_t len, unsigned long long left)
        seconds = left % 60;
 
        if (years)
-               offset += snprintf(buf + offset, len - offset - 1, "%s%llu " TERMINAL_FG_CYAN "year%s" TERMINAL_RESET, offset ? ", " : "", years, years == 1 ? "" : "s");
+               offset += snprintf(buf + offset, len - offset, "%s%llu " TERMINAL_FG_CYAN "year%s" TERMINAL_RESET, offset ? ", " : "", years, years == 1 ? "" : "s");
        if (days)
-               offset += snprintf(buf + offset, len - offset - 1, "%s%llu " TERMINAL_FG_CYAN  "day%s" TERMINAL_RESET, offset ? ", " : "", days, days == 1 ? "" : "s");
+               offset += snprintf(buf + offset, len - offset, "%s%llu " TERMINAL_FG_CYAN  "day%s" TERMINAL_RESET, offset ? ", " : "", days, days == 1 ? "" : "s");
        if (hours)
-               offset += snprintf(buf + offset, len - offset - 1, "%s%llu " TERMINAL_FG_CYAN  "hour%s" TERMINAL_RESET, offset ? ", " : "", hours, hours == 1 ? "" : "s");
+               offset += snprintf(buf + offset, len - offset, "%s%llu " TERMINAL_FG_CYAN  "hour%s" TERMINAL_RESET, offset ? ", " : "", hours, hours == 1 ? "" : "s");
        if (minutes)
-               offset += snprintf(buf + offset, len - offset - 1, "%s%llu " TERMINAL_FG_CYAN "minute%s" TERMINAL_RESET, offset ? ", " : "", minutes, minutes == 1 ? "" : "s");
+               offset += snprintf(buf + offset, len - offset, "%s%llu " TERMINAL_FG_CYAN "minute%s" TERMINAL_RESET, offset ? ", " : "", minutes, minutes == 1 ? "" : "s");
        if (seconds)
-               offset += snprintf(buf + offset, len - offset - 1, "%s%llu " TERMINAL_FG_CYAN  "second%s" TERMINAL_RESET, offset ? ", " : "", seconds, seconds == 1 ? "" : "s");
+               offset += snprintf(buf + offset, len - offset, "%s%llu " TERMINAL_FG_CYAN  "second%s" TERMINAL_RESET, offset ? ", " : "", seconds, seconds == 1 ? "" : "s");
 
        return offset;
 }
@@ -166,6 +167,7 @@ static char *ago(const struct timespec *t)
                offset = pretty_time(buf, sizeof(buf), now - t->tv_sec);
                strncpy(buf + offset, " ago", sizeof(buf) - offset - 1);
        }
+       buf[sizeof(buf) - 1] = '\0';
 
        return buf;
 }
@@ -183,15 +185,15 @@ static char *bytes(uint64_t b)
        static char buf[1024];
 
        if (b < 1024ULL)
-               snprintf(buf, sizeof(buf) - 1, "%u " TERMINAL_FG_CYAN "B" TERMINAL_RESET, (unsigned int)b);
+               snprintf(buf, sizeof(buf), "%u " TERMINAL_FG_CYAN "B" TERMINAL_RESET, (unsigned int)b);
        else if (b < 1024ULL * 1024ULL)
-               snprintf(buf, sizeof(buf) - 1, "%.2f " TERMINAL_FG_CYAN "KiB" TERMINAL_RESET, (double)b / 1024);
+               snprintf(buf, sizeof(buf), "%.2f " TERMINAL_FG_CYAN "KiB" TERMINAL_RESET, (double)b / 1024);
        else if (b < 1024ULL * 1024ULL * 1024ULL)
-               snprintf(buf, sizeof(buf) - 1, "%.2f " TERMINAL_FG_CYAN "MiB" TERMINAL_RESET, (double)b / (1024 * 1024));
+               snprintf(buf, sizeof(buf), "%.2f " TERMINAL_FG_CYAN "MiB" TERMINAL_RESET, (double)b / (1024 * 1024));
        else if (b < 1024ULL * 1024ULL * 1024ULL * 1024ULL)
-               snprintf(buf, sizeof(buf) - 1, "%.2f " TERMINAL_FG_CYAN "GiB" TERMINAL_RESET, (double)b / (1024 * 1024 * 1024));
+               snprintf(buf, sizeof(buf), "%.2f " TERMINAL_FG_CYAN "GiB" TERMINAL_RESET, (double)b / (1024 * 1024 * 1024));
        else
-               snprintf(buf, sizeof(buf) - 1, "%.2f " TERMINAL_FG_CYAN "TiB" TERMINAL_RESET, (double)b / (1024 * 1024 * 1024) / 1024);
+               snprintf(buf, sizeof(buf), "%.2f " TERMINAL_FG_CYAN "TiB" TERMINAL_RESET, (double)b / (1024 * 1024 * 1024) / 1024);
 
        return buf;
 }