Skip to content

Commit f7c1431

Browse files
jukkarhenrikbrixandersen
authored andcommitted
logging: backend: net: Do not bind local socket
The logging net backend will send syslog messages to syslog server and it is not meant to receive anything. If we bind to a local socket, it will create UDP server socket that can receive data. Unfortunately there is no one reading the data so we will eventually run out of memory in this case. Signed-off-by: Jukka Rissanen <[email protected]>
1 parent 8f13129 commit f7c1431

File tree

1 file changed

+2
-55
lines changed

1 file changed

+2
-55
lines changed

subsys/logging/backends/log_backend_net.c

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -91,27 +91,18 @@ LOG_OUTPUT_DEFINE(log_output_net, line_out, output_buf, sizeof(output_buf));
9191

9292
static int do_net_init(struct log_backend_net_ctx *ctx)
9393
{
94-
struct sockaddr *local_addr = NULL;
95-
struct sockaddr_in6 local_addr6 = {0};
96-
struct sockaddr_in local_addr4 = {0};
97-
socklen_t server_addr_len;
94+
socklen_t server_addr_len = 0;
9895
int ret, proto = IPPROTO_UDP, type = SOCK_DGRAM;
9996

10097
if (IS_ENABLED(CONFIG_NET_IPV4) && server_addr.sa_family == AF_INET) {
101-
local_addr = (struct sockaddr *)&local_addr4;
10298
server_addr_len = sizeof(struct sockaddr_in);
103-
local_addr4.sin_family = AF_INET;
104-
local_addr4.sin_port = 0U;
10599
}
106100

107101
if (IS_ENABLED(CONFIG_NET_IPV6) && server_addr.sa_family == AF_INET6) {
108-
local_addr = (struct sockaddr *)&local_addr6;
109102
server_addr_len = sizeof(struct sockaddr_in6);
110-
local_addr6.sin6_family = AF_INET6;
111-
local_addr6.sin6_port = 0U;
112103
}
113104

114-
if (local_addr == NULL) {
105+
if (server_addr_len == 0) {
115106
DBG("Server address unknown\n");
116107
return -EINVAL;
117108
}
@@ -132,50 +123,6 @@ static int do_net_init(struct log_backend_net_ctx *ctx)
132123

133124
if (IS_ENABLED(CONFIG_NET_HOSTNAME_ENABLE)) {
134125
(void)strncpy(dev_hostname, net_hostname_get(), MAX_HOSTNAME_LEN);
135-
136-
} else if (IS_ENABLED(CONFIG_NET_IPV6) &&
137-
server_addr.sa_family == AF_INET6) {
138-
const struct in6_addr *src;
139-
140-
src = net_if_ipv6_select_src_addr(
141-
NULL, &net_sin6(&server_addr)->sin6_addr);
142-
if (src) {
143-
net_addr_ntop(AF_INET6, src, dev_hostname,
144-
MAX_HOSTNAME_LEN);
145-
146-
net_ipaddr_copy(&local_addr6.sin6_addr, src);
147-
} else {
148-
goto unknown;
149-
}
150-
151-
} else if (IS_ENABLED(CONFIG_NET_IPV4) &&
152-
server_addr.sa_family == AF_INET) {
153-
const struct in_addr *src;
154-
155-
src = net_if_ipv4_select_src_addr(
156-
NULL, &net_sin(&server_addr)->sin_addr);
157-
158-
if (src) {
159-
net_addr_ntop(AF_INET, src, dev_hostname,
160-
MAX_HOSTNAME_LEN);
161-
162-
net_ipaddr_copy(&local_addr4.sin_addr, src);
163-
} else {
164-
goto unknown;
165-
}
166-
167-
} else {
168-
unknown:
169-
DBG("Cannot setup local socket\n");
170-
ret = -EINVAL;
171-
goto err;
172-
}
173-
174-
ret = zsock_bind(ctx->sock, local_addr, server_addr_len);
175-
if (ret < 0) {
176-
ret = -errno;
177-
DBG("Cannot bind socket (%d)\n", ret);
178-
goto err;
179126
}
180127

181128
ret = zsock_connect(ctx->sock, &server_addr, server_addr_len);

0 commit comments

Comments
 (0)