diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-01-22 16:56:27 +0100 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2018-01-22 17:04:29 +0100 |
commit | 91cfda81b57ae62ddaf465093e847875c8b1d932 (patch) | |
tree | 8879d39dbc28cc5390174ae5b3603f3d45c5f811 /src | |
parent | 49382720f8d5b4e270fae197156cd69292d42ffc (diff) |
socket: use inet_ntop() instead of inet_ntoa() in osmo_sock_local_ip()
The function inet_ntoa() stores its result in a static buffer and
returns the pointer. When inet_ntoa() is called subsequently it
overwrite the content of its static buffer with the new result.
Since we osmo_sock_local_ip() is a library function we should use
the more safe variant inet_ntop() in order to prevent unintentionally
overwriting data that the caller might still need. Such an error
would be hard to find.
- Use the more safe inet_ntop() inestead of inet_ntoa()
Change-Id: I9852b57736432032542bd96b6fdd4a2f08fc1f64
Diffstat (limited to 'src')
-rw-r--r-- | src/socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/socket.c b/src/socket.c index 35cce643..03789700 100644 --- a/src/socket.c +++ b/src/socket.c @@ -831,9 +831,9 @@ int osmo_sock_local_ip(char *local_ip, const char *remote_ip) if (rc < 0) return -EINVAL; if (local_addr.sin_family == AF_INET) - strncpy(local_ip, inet_ntoa(local_addr.sin_addr), INET_ADDRSTRLEN); + inet_ntop(AF_INET, &local_addr.sin_addr, local_ip, INET_ADDRSTRLEN); else if (local_addr.sin_family == AF_INET6) - strncpy(local_ip, inet_ntoa(local_addr.sin_addr), INET6_ADDRSTRLEN); + inet_ntop(AF_INET6, &local_addr.sin_addr, local_ip, INET6_ADDRSTRLEN); else return -EINVAL; |