foma/foma-avoid-deprecated-inet-functions.patch

41 lines
1.6 KiB
Diff

diff -Nru foma-b44022c7d9d347dc7392aabbf72c82e558767675.orig/foma/flookup.c foma-b44022c7d9d347dc7392aabbf72c82e558767675/foma/flookup.c
--- foma-b44022c7d9d347dc7392aabbf72c82e558767675.orig/foma/flookup.c 2020-09-28 21:00:09.000000000 +0200
+++ foma-b44022c7d9d347dc7392aabbf72c82e558767675/foma/flookup.c 2021-06-10 13:57:39.337587755 +0200
@@ -355,6 +355,8 @@
void server_init(void) {
unsigned int rcvsize = 262144;
+ int retval;
+ char server_address_string[INET_ADDRSTRLEN];
if ((listen_sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
perror("socket() failed");
@@ -373,7 +375,15 @@
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(port_number);
if (server_address != NULL) {
- serveraddr.sin_addr.s_addr = inet_addr(server_address);
+ retval = inet_pton(AF_INET, server_address, &serveraddr.sin_addr.s_addr);
+ if (retval != 1) {
+ if (retval == 0) {
+ printf("inet_pton() failed: string is not a valid address.\n");
+ exit(1);
+ }
+ perror("inet_pton() failed");
+ exit(1);
+ }
} else {
serveraddr.sin_addr.s_addr = INADDR_ANY;
}
@@ -381,5 +391,9 @@
perror("bind() failed");
exit(1);
}
- printf("Started flookup server on %s port %i\n", inet_ntoa(serveraddr.sin_addr), port_number); fflush(stdout);
+ if (inet_ntop(AF_INET, &serveraddr.sin_addr, server_address_string, INET_ADDRSTRLEN) == NULL) {
+ perror("inet_ntop() failed");
+ exit(1);
+ }
+ printf("Started flookup server on %s port %i\n", server_address_string, port_number); fflush(stdout);
}