mirror of
https://github.com/systemd/systemd
synced 2024-07-21 10:17:21 +00:00
Merge pull request #25081 from keszybz/test-local-addresses-fail
Fix racy check in test-local-addresses
This commit is contained in:
commit
edbaca9f9c
|
@ -189,7 +189,6 @@ fail:
|
|||
|
||||
static int manager_rtnl_listen(Manager *m) {
|
||||
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL, *reply = NULL;
|
||||
sd_netlink_message *i;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
|
@ -232,7 +231,7 @@ static int manager_rtnl_listen(Manager *m) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
for (i = reply; i; i = sd_netlink_message_next(i)) {
|
||||
for (sd_netlink_message *i = reply; i; i = sd_netlink_message_next(i)) {
|
||||
r = manager_process_link(m->rtnl, i, m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
@ -254,7 +253,7 @@ static int manager_rtnl_listen(Manager *m) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
for (i = reply; i; i = sd_netlink_message_next(i)) {
|
||||
for (sd_netlink_message *i = reply; i; i = sd_netlink_message_next(i)) {
|
||||
r = manager_process_address(m->rtnl, i, m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
@ -877,10 +876,8 @@ static int sendmsg_loop(int fd, struct msghdr *mh, int flags) {
|
|||
for (;;) {
|
||||
if (sendmsg(fd, mh, flags) >= 0)
|
||||
return 0;
|
||||
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (errno != EAGAIN)
|
||||
return -errno;
|
||||
|
||||
|
@ -901,10 +898,8 @@ static int write_loop(int fd, void *message, size_t length) {
|
|||
for (;;) {
|
||||
if (write(fd, message, length) >= 0)
|
||||
return 0;
|
||||
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (errno != EAGAIN)
|
||||
return -errno;
|
||||
|
||||
|
|
|
@ -68,7 +68,6 @@ int local_addresses(
|
|||
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
|
||||
_cleanup_free_ struct local_address *list = NULL;
|
||||
size_t n_list = 0;
|
||||
sd_netlink_message *m;
|
||||
int r;
|
||||
|
||||
if (context)
|
||||
|
@ -91,7 +90,7 @@ int local_addresses(
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
for (m = reply; m; m = sd_netlink_message_next(m)) {
|
||||
for (sd_netlink_message *m = reply; m; m = sd_netlink_message_next(m)) {
|
||||
struct local_address *a;
|
||||
unsigned char flags;
|
||||
uint16_t type;
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
#include "tests.h"
|
||||
|
||||
static void print_local_addresses(struct local_address *a, unsigned n) {
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
for (unsigned i = 0; i < n; i++) {
|
||||
_cleanup_free_ char *b = NULL;
|
||||
|
||||
assert_se(in_addr_to_string(a[i].family, &a[i].address, &b) >= 0);
|
||||
|
@ -21,49 +19,43 @@ static void print_local_addresses(struct local_address *a, unsigned n) {
|
|||
|
||||
TEST(local_addresses) {
|
||||
struct local_address *a = NULL;
|
||||
int n, n_ipv4, n_ipv6;
|
||||
int n;
|
||||
|
||||
n = local_addresses(NULL, 0, AF_INET, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:0, AF_INET) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
n_ipv4 = n;
|
||||
|
||||
n = local_addresses(NULL, 0, AF_INET6, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:0, AF_INET6) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
n_ipv6 = n;
|
||||
|
||||
n = local_addresses(NULL, 0, AF_UNSPEC, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:0, AF_UNSPEC) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
assert_se(n == n_ipv4 + n_ipv6);
|
||||
|
||||
n = local_addresses(NULL, 1, AF_INET, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:1, AF_INET) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
n_ipv4 = n;
|
||||
|
||||
n = local_addresses(NULL, 1, AF_INET6, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:1, AF_INET6) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
n_ipv6 = n;
|
||||
|
||||
n = local_addresses(NULL, 1, AF_UNSPEC, &a);
|
||||
assert_se(n >= 0);
|
||||
log_debug("/* Local Addresses(ifindex:1, AF_UNSPEC) */");
|
||||
print_local_addresses(a, (unsigned) n);
|
||||
a = mfree(a);
|
||||
assert_se(n == n_ipv4 + n_ipv6);
|
||||
|
||||
n = local_gateways(NULL, 0, AF_UNSPEC, &a);
|
||||
assert_se(n >= 0);
|
||||
|
|
Loading…
Reference in a new issue