Bug#980607: [PATCH] netcfg: FTBFS: test/test_inet_mton.c:12:15: error: too many arguments for format [-Werror=format-extra-args]
Control: tag -1 + patch upstream
The attached patches allowed me to build netcfg 1.169 again, at least
on amd64.
Description: Update testcases to work with current Check API
Some calls of the Check API (fail_unless(), fail_if(), ...) were
deprecated long ago and no longer compile correctly (#980607). This
patch works in the new calls and adds some polish where needed.
.
test/srunner.c: The Check API was apparently changed at some point to
derive testcase names from function names plus a "_fn" suffix which
breaks an old testcase. Test for that and use the old name for now.
Author: Dennis Filder <d.filder@web.de>
Bug-Debian: https://bugs.debian.org/980607
Last-Update: 2021-02-09
---
diff --git netcfg-1.169/test/test_nc_v6_interface_configured.c netcfg-1.169/test/test_nc_v6_interface_configured.c
index 92fa9c4..41afc7b 100644
--- netcfg-1.169/test/test_nc_v6_interface_configured.c
+++ netcfg-1.169/test/test_nc_v6_interface_configured.c
@@ -15,7 +15,7 @@ START_TEST(test_nc_v6_interface_configured_simple)
rv = nc_v6_interface_configured(&iface, 0);
- fail_unless(rv == 1, "Didn't find SLAAC");
+ ck_assert_msg(rv == 1, "Didn't find SLAAC");
srunner_reset_path();
}
diff --git netcfg-1.169/test/test_netcfg_gateway_reachable.c netcfg-1.169/test/test_netcfg_gateway_reachable.c
index 840d145..75f5414 100644
--- netcfg-1.169/test/test_netcfg_gateway_reachable.c
+++ netcfg-1.169/test/test_netcfg_gateway_reachable.c
@@ -11,12 +11,12 @@ START_TEST(test_netcfg_gateway_reachable_v4_24)
iface.masklen = 24;
iface.address_family = AF_INET;
- fail_unless (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (netcfg_gateway_reachable(&iface),
"Gateway erroneously unreachable");
strcpy(iface.gateway, "192.168.2.254");
- fail_if (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (!netcfg_gateway_reachable(&iface),
"Gateway erroneously reachable");
}
END_TEST
@@ -31,12 +31,12 @@ START_TEST(test_netcfg_gateway_reachable_v4_22)
iface.masklen = 22;
iface.address_family = AF_INET;
- fail_unless (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (netcfg_gateway_reachable(&iface),
"Gateway erroneously unreachable");
strcpy(iface.gateway, "192.168.4.254");
- fail_if (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (!netcfg_gateway_reachable(&iface),
"Gateway erroneously reachable");
}
END_TEST
@@ -51,12 +51,12 @@ START_TEST(test_netcfg_gateway_reachable_v6_64)
iface.masklen = 64;
iface.address_family = AF_INET6;
- fail_unless (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (netcfg_gateway_reachable(&iface),
"Gateway erroneously unreachable");
strcpy(iface.gateway, "2001:3:5::1");
- fail_if (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (!netcfg_gateway_reachable(&iface),
"Gateway erroneously reachable");
}
END_TEST
@@ -71,12 +71,12 @@ START_TEST(test_netcfg_gateway_reachable_v6_48)
iface.masklen = 48;
iface.address_family = AF_INET6;
- fail_unless (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (netcfg_gateway_reachable(&iface),
"Gateway erroneously unreachable");
strcpy(iface.gateway, "2001:3:6::1");
- fail_if (netcfg_gateway_reachable(&iface),
+ ck_assert_msg (!netcfg_gateway_reachable(&iface),
"Gateway erroneously reachable");
}
END_TEST
diff --git netcfg-1.169/test/test_inet_ptom.c netcfg-1.169/test/test_inet_ptom.c
index 8d67119..6a45deb 100644
--- netcfg-1.169/test/test_inet_ptom.c
+++ netcfg-1.169/test/test_inet_ptom.c
@@ -7,7 +7,7 @@ START_TEST(test_inet_ptom_v4_24)
inet_ptom(AF_INET, "255.255.255.0", &masklen);
- fail_unless (24 == masklen, "Expected masklen == 24, masklen was %i", masklen);
+ ck_assert_msg (24 == masklen, "Expected masklen == 24, masklen was %i", masklen);
}
END_TEST
@@ -17,7 +17,7 @@ START_TEST(test_inet_ptom_v4_22)
inet_ptom(AF_INET, "255.255.252.0", &masklen);
- fail_unless (22 == masklen, "Expected masklen == 22, masklen was %i", masklen);
+ ck_assert_msg (22 == masklen, "Expected masklen == 22, masklen was %i", masklen);
}
END_TEST
@@ -27,7 +27,7 @@ START_TEST(test_inet_ptom_v6_64)
inet_ptom(AF_INET6, "ffff:ffff:ffff:ffff::", &masklen);
- fail_unless (64 == masklen, "Expected masklen == 64, masklen was %i", masklen);
+ ck_assert_msg (64 == masklen, "Expected masklen == 64, masklen was %i", masklen);
}
END_TEST
@@ -37,7 +37,7 @@ START_TEST(test_inet_ptom_v6_60)
inet_ptom(AF_INET6, "ffff:ffff:ffff:fff0::", &masklen);
- fail_unless (60 == masklen, "Expected masklen == 60, masklen was %i", masklen);
+ ck_assert_msg (60 == masklen, "Expected masklen == 60, masklen was %i", masklen);
}
END_TEST
@@ -51,7 +51,7 @@ START_TEST(test_inet_ptom_v6_60_with_scraps)
*/
inet_ptom(AF_INET6, "ffff:ffff:ffff:fff0:ffff::", &masklen);
- fail_unless (60 == masklen, "Expected masklen == 60, masklen was %i", masklen);
+ ck_assert_msg (60 == masklen, "Expected masklen == 60, masklen was %i", masklen);
}
END_TEST
diff --git netcfg-1.169/test/test_netcfg_network_address.c netcfg-1.169/test/test_netcfg_network_address.c
index f14fcc9..a2c1f2c 100644
--- netcfg-1.169/test/test_netcfg_network_address.c
+++ netcfg-1.169/test/test_netcfg_network_address.c
@@ -13,8 +13,8 @@ START_TEST(test_netcfg_network_address_v4_24)
netcfg_network_address(&iface, network);
- fail_unless (strcmp("192.168.1.0", network) == 0,
- "Network address wrong; expected 192.168.1.0, got %s");
+ ck_assert_msg (strcmp("192.168.1.0", network) == 0,
+ "Network address wrong; expected 192.168.1.0, got %s", network);
}
END_TEST
@@ -30,8 +30,8 @@ START_TEST(test_netcfg_network_address_v4_22)
netcfg_network_address(&iface, network);
- fail_unless (strcmp("192.168.16.0", network) == 0,
- "Network address wrong; expected 192.168.16.0, got %s");
+ ck_assert_msg (strcmp("192.168.16.0", network) == 0,
+ "Network address wrong; expected 192.168.16.0, got %s", network);
}
END_TEST
@@ -47,8 +47,8 @@ START_TEST(test_netcfg_network_address_v6_64)
netcfg_network_address(&iface, network);
- fail_unless (strcmp("2001:3:5:7::", network) == 0,
- "Network address wrong; expected 2001:3:5:7::, got %s");
+ ck_assert_msg (strcmp("2001:3:5:7::", network) == 0,
+ "Network address wrong; expected 2001:3:5:7::, got %s", network);
}
END_TEST
@@ -64,8 +64,8 @@ START_TEST(test_netcfg_network_address_v6_48)
netcfg_network_address(&iface, network);
- fail_unless (strcmp("2001:3:5::", network) == 0,
- "Network address wrong; expected 2001:3:5::, got %s");
+ ck_assert_msg (strcmp("2001:3:5::", network) == 0,
+ "Network address wrong; expected 2001:3:5::, got %s", network);
}
END_TEST
diff --git netcfg-1.169/test/test_inet_mton.c netcfg-1.169/test/test_inet_mton.c
index 840c306..472b4cf 100644
--- netcfg-1.169/test/test_inet_mton.c
+++ netcfg-1.169/test/test_inet_mton.c
@@ -8,7 +8,7 @@ START_TEST(test_inet_mton_v4_24)
inet_mton(AF_INET, 24, &addr);
- fail_unless (memcmp(expected, &(addr.s_addr), 4) == 0,
+ ck_assert_msg (memcmp(expected, &(addr.s_addr), 4) == 0,
"Mask address wasn't 24 bits");
}
END_TEST
@@ -20,7 +20,7 @@ START_TEST(test_inet_mton_v4_22)
inet_mton(AF_INET, 22, &addr);
- fail_unless (memcmp(expected, &(addr.s_addr), 4) == 0,
+ ck_assert_msg (memcmp(expected, &(addr.s_addr), 4) == 0,
"Mask address wasn't 22 bits");
}
END_TEST
@@ -34,7 +34,7 @@ START_TEST(test_inet_mton_v6_64)
inet_mton(AF_INET6, 64, &addr);
- fail_unless (memcmp(expected, addr.s6_addr, 16) == 0,
+ ck_assert_msg (memcmp(expected, addr.s6_addr, 16) == 0,
"Mask address wasn't 64 bits");
}
END_TEST
@@ -48,7 +48,7 @@ START_TEST(test_inet_mton_v6_60)
inet_mton(AF_INET6, 60, &addr);
- fail_unless (memcmp(expected, addr.s6_addr, 16) == 0,
+ ck_assert_msg (memcmp(expected, addr.s6_addr, 16) == 0,
"Mask address wasn't 60 bits");
}
END_TEST
diff --git netcfg-1.169/test/test_netcfg_parse_cidr_address.c netcfg-1.169/test/test_netcfg_parse_cidr_address.c
index 2b1cdca..ade2672 100644
--- netcfg-1.169/test/test_netcfg_parse_cidr_address.c
+++ netcfg-1.169/test/test_netcfg_parse_cidr_address.c
@@ -10,18 +10,18 @@ START_TEST(test_parse_standalone_v4_address)
interface.masklen = 7;
rv = netcfg_parse_cidr_address("192.0.2.12", &interface);
- fail_unless (rv,
+ ck_assert_msg (rv,
"parsing failed, rv = %i", rv);
- fail_unless (interface.masklen == 0,
+ ck_assert_msg (interface.masklen == 0,
"masklen was %i, should have been 0",
interface.masklen);
- fail_unless (strcmp("192.0.2.12", interface.ipaddress) == 0,
+ ck_assert_msg (strcmp("192.0.2.12", interface.ipaddress) == 0,
"IP address was %s, should have been 192.10.2.12",
interface.ipaddress);
- fail_unless (interface.address_family == AF_INET,
+ ck_assert_msg (interface.address_family == AF_INET,
"Address family should have been AF_INET");
}
END_TEST
@@ -35,18 +35,18 @@ START_TEST(test_parse_cidr_v4_address)
interface.masklen = 7;
rv = netcfg_parse_cidr_address("192.0.2.12/24", &interface);
- fail_unless (rv,
+ ck_assert_msg (rv,
"parsing failed, rv = %i", rv);
- fail_unless (interface.masklen == 24,
+ ck_assert_msg (interface.masklen == 24,
"masklen was %i, should have been 24",
interface.masklen);
- fail_unless (strcmp("192.0.2.12", interface.ipaddress) == 0,
+ ck_assert_msg (strcmp("192.0.2.12", interface.ipaddress) == 0,
"IP address was %s, should have been 192.10.2.12",
interface.ipaddress);
- fail_unless (interface.address_family == AF_INET,
+ ck_assert_msg (interface.address_family == AF_INET,
"Address family should have been AF_INET");
}
END_TEST
@@ -60,18 +60,18 @@ START_TEST(test_parse_standalone_v6_address)
interface.masklen = 7;
rv = netcfg_parse_cidr_address("fd80:0:0::2", &interface);
- fail_unless (rv,
+ ck_assert_msg (rv,
"parsing failed, rv = %i", rv);
- fail_unless (interface.masklen == 0,
+ ck_assert_msg (interface.masklen == 0,
"masklen was %i, should have been 0",
interface.masklen);
- fail_unless (strcmp("fd80::2", interface.ipaddress) == 0,
+ ck_assert_msg (strcmp("fd80::2", interface.ipaddress) == 0,
"IP address was %s, should have been fd80::2",
interface.ipaddress);
- fail_unless (interface.address_family == AF_INET6,
+ ck_assert_msg (interface.address_family == AF_INET6,
"Address family should have been AF_INET6");
}
END_TEST
@@ -85,18 +85,18 @@ START_TEST(test_parse_cidr_v6_address)
interface.masklen = 7;
rv = netcfg_parse_cidr_address("fd80:0::4/64", &interface);
- fail_unless (rv,
+ ck_assert_msg (rv,
"parsing failed, rv = %i", rv);
- fail_unless (interface.masklen == 64,
+ ck_assert_msg (interface.masklen == 64,
"masklen was %i, should have been 26",
interface.masklen);
- fail_unless (strcmp("fd80::4", interface.ipaddress) == 0,
+ ck_assert_msg (strcmp("fd80::4", interface.ipaddress) == 0,
"IP address was %s, should have been fd80::4",
interface.ipaddress);
- fail_unless (interface.address_family == AF_INET6,
+ ck_assert_msg (interface.address_family == AF_INET6,
"Address family should have been AF_INET6");
}
END_TEST
@@ -110,18 +110,18 @@ START_TEST(test_parse_cidr_ignore_leading_trailing_spaces)
interface.masklen = 7;
rv = netcfg_parse_cidr_address(" 192.0.2.12 ", &interface);
- fail_unless (rv,
+ ck_assert_msg (rv,
"parsing failed, rv = %i", rv);
- fail_unless (interface.masklen == 0,
+ ck_assert_msg (interface.masklen == 0,
"masklen was %i, should have been 0",
interface.masklen);
- fail_unless (strcmp("192.0.2.12", interface.ipaddress) == 0,
+ ck_assert_msg (strcmp("192.0.2.12", interface.ipaddress) == 0,
"IP address was %s, should have been 192.10.2.12",
interface.ipaddress);
- fail_unless (interface.address_family == AF_INET,
+ ck_assert_msg (interface.address_family == AF_INET,
"Address family should have been AF_INET");
}
END_TEST
diff --git netcfg-1.169/test/srunner.c netcfg-1.169/test/srunner.c
index b81bf1d..7ea64a1 100644
--- netcfg-1.169/test/srunner.c
+++ netcfg-1.169/test/srunner.c
@@ -49,22 +49,39 @@ int main(int argc, char *argv[])
void srunner_mock_path(const char *testcase)
{
char *new_path;
+ char *testcasedir;
unsigned int new_path_len;
+ unsigned int l;
original_path = strdup(getenv("PATH"));
+ testcasedir = strdup(testcase);
+ if (testcasedir && (l=strlen(testcasedir)) >= 3 \
+ && testcasedir[l-3]=='_' \
+ && testcasedir[l-2]=='f' \
+ && testcasedir[l-1]=='n')
+ testcasedir[l-3]='\0'; /* prune "_fn" suffix */
+ else {
+ if (testcasedir)
+ free(testcasedir);
+ testcasedir = NULL;
+ }
new_path_len = strlen(test_run_root)
+ 12 /* /mock_paths/ */
- + strlen(testcase) + 1 /* : */
+ + strlen(testcasedir?testcasedir:testcase) + 1 /* : */
+ strlen(original_path) + 1 /* \0 */;
new_path = malloc(new_path_len);
- snprintf(new_path, new_path_len, "%s/mock_paths/%s:%s", test_run_root, testcase, original_path);
+ snprintf(new_path, new_path_len, "%s/mock_paths/%s:%s",
+ test_run_root, testcasedir?testcasedir:testcase,
+ original_path);
setenv("PATH", new_path, 1);
free(new_path);
+ if (testcasedir)
+ free(testcasedir);
}
void srunner_reset_path()
Description: Satisfy GCC pedantery for strncpy() calls
The code has some strncpy() calls which GCC no longer accepts with
-Wall -Werror. Write them more carefully and use memcpy() where
applicable.
.
Encountered while looking into #980607.
Author: Dennis Filder <d.filder@web.de>
Last-Update: 2021-02-09
---
diff --git netcfg-1.169/autoconfig.c netcfg-1.169/autoconfig.c
index f254cf3..3db3a5a 100644
--- netcfg-1.169/autoconfig.c
+++ netcfg-1.169/autoconfig.c
@@ -343,15 +343,18 @@ static int netcfg_dhcpv6(struct debconfclient *client, struct netcfg_interface *
if (!strncmp("nameserver[", l, 11) && ns_idx < NETCFG_NAMESERVERS_MAX) {
p = strstr(l, "] ") + 2;
- strncpy(interface->nameservers[ns_idx], p, sizeof(interface->nameservers[ns_idx]));
+ strncpy(interface->nameservers[ns_idx], p, sizeof(interface->nameservers[ns_idx])-1);
+ interface->nameservers[ns_idx][sizeof(interface->nameservers[ns_idx])-1]='\0';
ns_idx++;
} else if (!strncmp("NTP server[", l, 11) && ntp_idx < NETCFG_NTPSERVERS_MAX) {
p = strstr(l, "] ") + 2;
- strncpy(interface->ntp_servers[ntp_idx], p, sizeof(interface->ntp_servers[ntp_idx]));
+ strncpy(interface->ntp_servers[ntp_idx], p, sizeof(interface->ntp_servers[ntp_idx])-1);
+ interface->ntp_servers[ntp_idx][sizeof(interface->ntp_servers[ntp_idx])-1]='\0';
ntp_idx++;
} else if (!strncmp("Domain search list[0] ", l, 21)) {
p = strstr(l, "] ") + 2;
- strncpy(domain, p, sizeof(domain));
+ strncpy(domain, p, sizeof(domain)-1);
+ domain[sizeof(domain)-1]='\0';
/* Strip trailing . */
if (domain[strlen(domain)-1] == '.') {
domain[strlen(domain)-1] = '\0';
diff --git netcfg-1.169/dhcp.c netcfg-1.169/dhcp.c
index fe06950..26bc6f6 100644
--- netcfg-1.169/dhcp.c
+++ netcfg-1.169/dhcp.c
@@ -667,7 +667,8 @@ int read_resolv_conf_nameservers(char *resolv_conf_file, struct netcfg_interface
rtrim(buf);
ptr = buf + strlen("nameserver ");
- strncpy(interface->nameservers[i], ptr, NETCFG_ADDRSTRLEN);
+ memcpy(interface->nameservers[i], ptr, NETCFG_ADDRSTRLEN-1);
+ interface->nameservers[i][NETCFG_ADDRSTRLEN-1]='\0';
di_debug("Read nameserver %s", interface->nameservers[i]);
i++;
if (i >= NETCFG_NAMESERVERS_MAX) {
diff --git netcfg-1.169/netcfg-common.c netcfg-1.169/netcfg-common.c
index c6d1d8d..2a8fa00 100644
--- netcfg-1.169/netcfg-common.c
+++ netcfg-1.169/netcfg-common.c
@@ -245,7 +245,8 @@ int is_raw_80211(const char *iface)
struct ifreq ifr;
struct sockaddr sa;
- strncpy(ifr.ifr_name, iface, IFNAMSIZ);
+ strncpy(ifr.ifr_name, iface, IFNAMSIZ-1);
+ ifr.ifr_name[IFNAMSIZ-1]='\0';
if (skfd && ioctl(skfd, SIOCGIFHWADDR, &ifr) < 0) {
di_warning("Unable to retrieve interface type.");
@@ -408,12 +409,13 @@ int get_all_ifs (int all, char*** ptr)
char ibuf[512];
char** list = NULL;
size_t len = 0;
+ ibuf[sizeof(ibuf)-1]='\0';
if (getifaddrs(&ifap) == -1)
return 0;
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- strncpy(ibuf, ifa->ifa_name, sizeof(ibuf));
+ strncpy(ibuf, ifa->ifa_name, sizeof(ibuf)-1);
if (ifa->ifa_flags & IFF_LOOPBACK) /* ignore loopback devices */
continue;
#if defined(__linux__)
@@ -1310,11 +1312,12 @@ void interface_up (const char *if_name)
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, if_name, IFNAMSIZ);
+ strncpy(ifr.ifr_name, if_name, IFNAMSIZ-1);
+ ifr.ifr_name[IFNAMSIZ-1]='\0';
if (skfd && ioctl(skfd, SIOCGIFFLAGS, &ifr) >= 0) {
di_info("Activating interface %s", if_name);
- strncpy(ifr.ifr_name, if_name, IFNAMSIZ);
+ strncpy(ifr.ifr_name, if_name, IFNAMSIZ-1);
ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
ioctl(skfd, SIOCSIFFLAGS, &ifr);
} else {
@@ -1326,11 +1329,12 @@ void interface_down (const char *if_name)
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, if_name, IFNAMSIZ);
+ strncpy(ifr.ifr_name, if_name, IFNAMSIZ-1);
+ ifr.ifr_name[IFNAMSIZ-1]='\0';
if (skfd && ioctl(skfd, SIOCGIFFLAGS, &ifr) >= 0) {
di_info("Taking down interface %s", if_name);
- strncpy(ifr.ifr_name, if_name, IFNAMSIZ);
+ strncpy(ifr.ifr_name, if_name, IFNAMSIZ-1);
ifr.ifr_flags &= ~IFF_UP;
ioctl(skfd, SIOCSIFFLAGS, &ifr);
} else {
@@ -1580,7 +1584,8 @@ int netcfg_parse_cidr_address(const char *address, struct netcfg_interface *inte
char *maskptr, *addrstr, addrbuf[NETCFG_ADDRSTRLEN];
int i;
- strncpy(addrbuf, address, NETCFG_ADDRSTRLEN);
+ strncpy(addrbuf, address, NETCFG_ADDRSTRLEN-1);
+ addrbuf[NETCFG_ADDRSTRLEN-1]='\0';
addrstr = strtrim(addrbuf);
if ((maskptr = strchr(addrstr, '/'))) {
Reply to: