summaryrefslogtreecommitdiff
path: root/Kernel/Net/IPv4Socket.cpp
diff options
context:
space:
mode:
authorGunnar Beutner <gbeutner@serenityos.org>2021-05-12 12:14:03 +0200
committerAndreas Kling <kling@serenityos.org>2021-05-12 13:47:07 +0200
commit532db9f76881b574924b7fb26772cc911e343a5a (patch)
tree538b77a4867b8b6e38c105aa8d803e24c1553047 /Kernel/Net/IPv4Socket.cpp
parentaf59f64bc0ca4446deb3265a4b1a37be3fb5d2ab (diff)
downloadserenity-532db9f76881b574924b7fb26772cc911e343a5a.zip
Kernel: Treat 0.0.0.0 as a loopback address
This matches what other operating systems like Linux do: $ ip route get 0.0.0.0 local 0.0.0.0 dev lo src 127.0.0.1 uid 1000 cache <local> $ ssh 0.0.0.0 gunnar@0.0.0.0's password: $ ss -na | grep :22 | grep ESTAB tcp ESTAB 0 0 127.0.0.1:43118 127.0.0.1:22 tcp ESTAB 0 0 127.0.0.1:22 127.0.0.1:43118
Diffstat (limited to 'Kernel/Net/IPv4Socket.cpp')
-rw-r--r--Kernel/Net/IPv4Socket.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp
index 62fd5cec4d..ad039cd4e7 100644
--- a/Kernel/Net/IPv4Socket.cpp
+++ b/Kernel/Net/IPv4Socket.cpp
@@ -139,6 +139,8 @@ KResult IPv4Socket::connect(FileDescription& description, Userspace<const sockad
return EFAULT;
m_peer_address = IPv4Address((const u8*)&safe_address.sin_addr.s_addr);
+ if (m_peer_address == IPv4Address { 0, 0, 0, 0 })
+ m_peer_address = IPv4Address { 127, 0, 0, 1 };
m_peer_port = ntohs(safe_address.sin_port);
return protocol_connect(description, should_block);