aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-05-10 09:28:24 +0200
committerHarald Welte <laforge@gnumonks.org>2019-05-10 13:36:08 +0200
commitea9ea52bbbcb63a6cbba91a3914a706242af06b0 (patch)
treedde7f7f2cc0066dfc9f6337cfa41605c12cce678
parentea8272c3b619ab7a03eab811050c0700e05fd398 (diff)
osmo_sock_get_name_*: Ensure string is returned in error case
osmo_sock_get_name_buf(): In case the getsockname() call is failing for some weird reason, we shouldn't return an uninitialized, non-zero-terminated string buffer to the caller, as most callers will be too lazy to test the return value. This holds even more true for users of the internal osmo_sock_get_name2() and osmo_sock_get_name2_c() functions which indeed very much ignore the return value of osmo_sock_get_name_buf(). Change-Id: I2d56327e96b7a6783cca38b828c5ee74aed776ae
-rw-r--r--src/socket.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/socket.c b/src/socket.c
index 7c412b66..614ad366 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -805,8 +805,10 @@ int osmo_sock_get_name_buf(char *str, size_t str_len, int fd)
int rc;
/* get local */
- if ((rc = osmo_sock_get_ip_and_port(fd, hostbuf_l, sizeof(hostbuf_l), portbuf_l, sizeof(portbuf_l), true)))
+ if ((rc = osmo_sock_get_ip_and_port(fd, hostbuf_l, sizeof(hostbuf_l), portbuf_l, sizeof(portbuf_l), true))) {
+ osmo_strlcpy(str, "<error-in-getsockname>", str_len);
return rc;
+ }
/* get remote */
if (osmo_sock_get_ip_and_port(fd, hostbuf_r, sizeof(hostbuf_r), portbuf_r, sizeof(portbuf_r), false) != 0)