Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3d38969 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Return a valid error code when adding an invalid IP address.

Currently, passing an invalid IP address to interfaceAddAddress
and friends results in an invalid error message:

    12-02 13:00:42.675 interfaceAddAddress("testtap2355", "2001:db8::1/64", 64) -> ServiceSpecificException(-8, "InterfaceController error: Unknown error -8") <1.63ms>

This is due to confusion between getaddrinfo error codes and
errno values.

Test: new unit test added to IpClientIntegrationTest
Change-Id: Ifdaa4281a9bcf3998e3216472c5c1df0f5285214
parent d70c3221
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -113,6 +113,10 @@ int string_to_ip(const char *string, struct sockaddr_storage *ss) {
    if (ret == 0) {
        memcpy(ss, ai->ai_addr, ai->ai_addrlen);
        freeaddrinfo(ai);
    } else {
        // Getaddrinfo has its own error codes. Convert to negative errno.
        // There, the only thing that can reasonably happen is that the passed-in string is invalid.
        ret = (ret == EAI_SYSTEM) ? -errno : -EINVAL;
    }

    return ret;