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.fil...@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.fil...@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, '/'))) {