[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: