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

Commit fee9d0d4 authored by Maciej Żenczykowski's avatar Maciej Żenczykowski Committed by Automerger Merge Worker
Browse files

DnsResolver - disable fchown() on Q am: fc9aa724 am: 7be4d3be am: 5ad5e92f am: 2a6d357e

Original change: https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1364661

Change-Id: I9f6c98a6e36a94479e38f6e40d883e09534ddee8
parents a914b335 2a6d357e
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -169,16 +169,20 @@ android::net::NsType getQueryType(const uint8_t* msg, size_t msgLen);
android::net::IpVersion ipFamilyToIPVersion(int ipFamily);

inline void resolv_tag_socket(int sock, uid_t uid, pid_t pid) {
    // This is effectively equivalent to testing for R+
    if (android::net::gResNetdCallbacks.tagSocket != nullptr) {
        if (int err = android::net::gResNetdCallbacks.tagSocket(sock, TAG_SYSTEM_DNS, uid, pid)) {
            LOG(WARNING) << "Failed to tag socket: " << strerror(-err);
        }
    }

    // R+, since fchown() incompatible with Q's ebpf vpn isolation feature
    if (android::net::gApiLevel >= 30) {
        if (fchown(sock, uid, -1) == -1) {
            LOG(WARNING) << "Failed to chown socket: " << strerror(errno);
        }
    }
}

inline std::string addrToString(const sockaddr_storage* addr) {
    char out[INET6_ADDRSTRLEN] = {0};