From 1217583e2bcae13425f91cfb8b0faa5cec4f2e26 Mon Sep 17 00:00:00 2001 From: leitner Date: Tue, 27 Apr 2021 17:39:42 +0000 Subject: [PATCH] now that gcc 11's static analyzer looks at array bounds in arguments like "char ip[4]", let's be more strict about that --- dns.h | 16 ++--- ip4.h | 4 +- ip6.h | 16 ++--- socket.h | 66 ++++++++++--------- socket/fmt_ip6if.c | 2 +- socket/scan_ip6if.c | 2 +- socket/socket_accept4.c | 2 +- socket/socket_accept4_flags.c | 13 ++-- socket/socket_accept4_makenonblocking.c | 2 +- ...t_accept4_makenonblocking_setcloseonexec.c | 2 +- socket/socket_accept4_setcloseonexec.c | 2 +- socket/socket_accept6.c | 2 +- socket/socket_accept6_flags.c | 16 +++-- socket/socket_accept6_makenonblocking.c | 2 +- ...t_accept6_makenonblocking_setcloseonexec.c | 2 +- socket/socket_accept6_setcloseonexec.c | 2 +- socket/socket_bind4.c | 2 +- socket/socket_bind4_reuse.c | 2 +- socket/socket_bind6_reuse.c | 2 +- socket/socket_connect4.c | 2 +- socket/socket_fastopen_connect4.c | 2 +- socket/socket_fastopen_connect6.c | 2 +- 22 files changed, 87 insertions(+), 76 deletions(-) diff --git a/dns.h b/dns.h index 587695b..4f96486 100644 --- a/dns.h +++ b/dns.h @@ -45,7 +45,7 @@ struct dns_transmit { char qtype[2]; } ; -void dns_random_init(const char *); +void dns_random_init(const char data[128]); unsigned int dns_random(unsigned int); void dns_sortip(char *,unsigned int); @@ -64,13 +64,13 @@ unsigned int dns_packet_copy(const char *,unsigned int,unsigned int,char *,unsig unsigned int dns_packet_getname(const char *,unsigned int,unsigned int,char **); unsigned int dns_packet_skipname(const char *,unsigned int,unsigned int); -int dns_transmit_start(struct dns_transmit *,const char *,int,const char *,const char *,const char *); +int dns_transmit_start(struct dns_transmit *,const char servers[256],int,const char *q,const char qtype[2],const char localip[16]); void dns_transmit_free(struct dns_transmit *); void dns_transmit_io(struct dns_transmit *,iopause_fd *,struct taia *); int dns_transmit_get(struct dns_transmit *,const iopause_fd *,const struct taia *); -int dns_resolvconfip(char *); -int dns_resolve(const char *,const char *); +int dns_resolvconfip(char servers[256]); +int dns_resolve(const char *q,const char qtype[2]); extern struct dns_transmit dns_resolve_tx; int dns_ip4_packet(stralloc *,const char *,unsigned int); @@ -78,9 +78,9 @@ int dns_ip4(stralloc *,const stralloc *); int dns_ip6_packet(stralloc *,const char *,unsigned int); int dns_ip6(stralloc *,stralloc *); int dns_name_packet(stralloc *,const char *,unsigned int); -void dns_name4_domain(char *,const char *); #define DNS_NAME4_DOMAIN 31 -int dns_name4(stralloc *,const char *); +void dns_name4_domain(char name[DNS_NAME4_DOMAIN],const char ip[4]); +int dns_name4(stralloc *,const char ip[4]); int dns_txt_packet(stralloc *,const char *,unsigned int); int dns_txt(stralloc *,const stralloc *); int dns_mx_packet(stralloc *,const char *,unsigned int); @@ -92,9 +92,9 @@ int dns_ip4_qualify(stralloc *,stralloc *,const stralloc *); int dns_ip6_qualify_rules(stralloc *,stralloc *,const stralloc *,const stralloc *); int dns_ip6_qualify(stralloc *,stralloc *,const stralloc *); -void dns_name6_domain(char *,const char *); #define DNS_NAME6_DOMAIN (4*16+11) -int dns_name6(stralloc *,const char *); +void dns_name6_domain(char name[DNS_NAME6_DOMAIN],const char ip[16]); +int dns_name6(stralloc *,const char ip[16]); #ifdef __cplusplus } diff --git a/ip4.h b/ip4.h index df74e7e..83ec400 100644 --- a/ip4.h +++ b/ip4.h @@ -6,8 +6,8 @@ extern "C" { #endif -size_t scan_ip4(const char *src,char *ip); -size_t fmt_ip4(char *dest,const char *ip); +size_t scan_ip4(const char *src,char ip[4]); +size_t fmt_ip4(char *dest,const char ip[4]); /* for djb backwards compatibility */ #define ip4_scan scan_ip4 diff --git a/ip6.h b/ip6.h index 39db80e..6f7c4c3 100644 --- a/ip6.h +++ b/ip6.h @@ -9,16 +9,16 @@ extern "C" { #endif -size_t scan_ip6(const char* src,char* ip); -size_t fmt_ip6(char* dest,const char* ip); -size_t fmt_ip6c(char* dest,const char* ip); +size_t scan_ip6(const char* src,char ip[16]); +size_t fmt_ip6(char* dest,const char ip[16]); +size_t fmt_ip6c(char* dest,const char ip[16]); -size_t scan_ip6if(const char* src,char* ip,uint32* scope_id); -size_t fmt_ip6if(char* dest,const char* ip,uint32 scope_id); -size_t fmt_ip6ifc(char* dest,const char* ip,uint32 scope_id); +size_t scan_ip6if(const char* src,char ip[16],uint32* scope_id); +size_t fmt_ip6if(char* dest,const char ip[16],uint32 scope_id); +size_t fmt_ip6ifc(char* dest,const char ip[16],uint32 scope_id); -size_t scan_ip6_flat(const char *src,char *); -size_t fmt_ip6_flat(char *dest,const char *); +size_t scan_ip6_flat(const char *src,char ip[16]); +size_t fmt_ip6_flat(char *dest,const char ip[16]); /* ip6 address syntax: (h = hex digit), no leading '0' required diff --git a/socket.h b/socket.h index e2682b8..27bcf50 100644 --- a/socket.h +++ b/socket.h @@ -29,22 +29,22 @@ int socket_sctp6b(void); #define socket_tcp() socket_tcp4() #define socket_udp() socket_udp4() -int socket_connect4(int s,const char* ip,uint16 port); -int socket_connect6(int s,const char* ip,uint16 port,uint32 scope_id); +int socket_connect4(int s,const char ip[4],uint16 port); +int socket_connect6(int s,const char ip[16],uint16 port,uint32 scope_id); int socket_connected(int s); -int socket_bind4(int s,const char* ip,uint16 port); -int socket_bind4_reuse(int s,const char* ip,uint16 port); -int socket_bind6(int s,const char* ip,uint16 port,uint32 scope_id); -int socket_bind6_reuse(int s,const char* ip,uint16 port,uint32 scope_id); +int socket_bind4(int s,const char ip[4],uint16 port); +int socket_bind4_reuse(int s,const char ip[4],uint16 port); +int socket_bind6(int s,const char ip[16],uint16 port,uint32 scope_id); +int socket_bind6_reuse(int s,const char ip[16],uint16 port,uint32 scope_id); int socket_listen(int s,unsigned int backlog); -int socket_accept4(int s,char* ip,uint16* port); -int socket_accept6(int s,char* ip,uint16* port,uint32* scope_id); -int socket_accept4_makenonblocking(int s,char* ip,uint16* port); -int socket_accept6_makenonblocking(int s,char* ip,uint16* port,uint32* scope_id); -int socket_accept4_setcloseonexec(int s,char* ip,uint16* port); -int socket_accept6_setcloseonexec(int s,char* ip,uint16* port,uint32* scope_id); -int socket_accept4_makenonblocking_setcloseonexec(int s,char* ip,uint16* port); -int socket_accept6_makenonblocking_setcloseonexec(int s,char* ip,uint16* port,uint32* scope_id); +int socket_accept4(int s,char ip[4],uint16* port); +int socket_accept6(int s,char ip[16],uint16* port,uint32* scope_id); +int socket_accept4_makenonblocking(int s,char ip[4],uint16* port); +int socket_accept6_makenonblocking(int s,char ip[16],uint16* port,uint32* scope_id); +int socket_accept4_setcloseonexec(int s,char ip[4],uint16* port); +int socket_accept6_setcloseonexec(int s,char ip[16],uint16* port,uint32* scope_id); +int socket_accept4_makenonblocking_setcloseonexec(int s,char ip[4],uint16* port); +int socket_accept6_makenonblocking_setcloseonexec(int s,char ip[16],uint16* port,uint32* scope_id); /* These are internal wrappers around accept4, not meant for external use. * flags can be SOCKET_NONBLOCK or SOCKET_CLOEXEC or both */ @@ -52,36 +52,36 @@ enum { SOCKET_NONBLOCK=1, SOCKET_CLOEXEC=2, }; -int socket_accept4_flags(int s,char* ip,uint16* port, int flags); -int socket_accept6_flags(int s,char* ip,uint16* port,uint32* scope_id, int flags); +int socket_accept4_flags(int s,char ip[4],uint16* port, int flags); +int socket_accept6_flags(int s,char ip[16],uint16* port,uint32* scope_id, int flags); att_writen(2,3) att_nonnull(2) -ssize_t socket_recv4(int s,char* buf,size_t len,char* ip,uint16* port); +ssize_t socket_recv4(int s,char* buf,size_t len,char ip[4],uint16* port); att_writen(2,3) att_nonnull(2) -ssize_t socket_recv6(int s,char* buf,size_t len,char* ip,uint16* port,uint32* scope_id); +ssize_t socket_recv6(int s,char* buf,size_t len,char ip[16],uint16* port,uint32* scope_id); att_readn(2,3) att_nonnull(2) -ssize_t socket_send4(int s,const char* buf,size_t len,const char* ip,uint16 port); +ssize_t socket_send4(int s,const char* buf,size_t len,const char ip[4],uint16 port); att_readn(2,3) att_nonnull(2) -ssize_t socket_send4_flag(int s,const char* buf,size_t len,const char* ip,uint16 port,int flags); +ssize_t socket_send4_flag(int s,const char* buf,size_t len,const char ip[4],uint16 port,int flags); att_readn(2,3) att_nonnull(2) -ssize_t socket_send6(int s,const char* buf,size_t len,const char* ip,uint16 port,uint32 scope_id); +ssize_t socket_send6(int s,const char* buf,size_t len,const char ip[16],uint16 port,uint32 scope_id); att_readn(2,3) att_nonnull(2) -ssize_t socket_send6_flag(int s,const char* buf,size_t len,const char* ip,uint16 port,uint32 scope_id,int flags); +ssize_t socket_send6_flag(int s,const char* buf,size_t len,const char ip[16],uint16 port,uint32 scope_id,int flags); -int socket_local4(int s,char* ip,uint16* port); -int socket_local6(int s,char* ip,uint16* port,uint32* scope_id); -int socket_remote4(int s,char* ip,uint16* port); -int socket_remote6(int s,char* ip,uint16* port,uint32* scope_id); +int socket_local4(int s,char ip[4],uint16* port); +int socket_local6(int s,char ip[16],uint16* port,uint32* scope_id); +int socket_remote4(int s,char ip[4],uint16* port); +int socket_remote6(int s,char ip[16],uint16* port,uint32* scope_id); /* enable sending udp packets to the broadcast address */ int socket_broadcast(int s); /* join a multicast group on the given interface */ -int socket_mcjoin4(int s,const char* groupip,const char* _interface); -int socket_mcjoin6(int s,const char* groupip,int _interface); +int socket_mcjoin4(int s,const char groupip[4],const char _interface[4]); +int socket_mcjoin6(int s,const char groupip[16],int _interface); /* leave a multicast group on the given interface */ -int socket_mcleave4(int s,const char* groupip); -int socket_mcleave6(int s,const char* groupip); +int socket_mcleave4(int s,const char groupip[4]); +int socket_mcleave6(int s,const char groupip[16]); /* set multicast TTL/hop count for outgoing packets */ int socket_mcttl4(int s,char hops); int socket_mchopcount6(int s,char hops); @@ -121,8 +121,10 @@ int socket_quickack(int s,int value); /* For client-side TCP fast open, connect and sending the first data is * just one step, so we need an API to do it in one step */ -ssize_t socket_fastopen_connect4(int s,const char* ip,uint16 port,const char* buf,size_t len); -ssize_t socket_fastopen_connect6(int s,const char* ip,uint16 port,uint32 scope_id,const char* buf,size_t len); +att_readn(4,5) att_nonnull(4) +ssize_t socket_fastopen_connect4(int s,const char ip[4],uint16 port,const char* buf,size_t len); +att_readn(5,6) att_nonnull(5) +ssize_t socket_fastopen_connect6(int s,const char ip[16],uint16 port,uint32 scope_id,const char* buf,size_t len); #ifdef __MINGW32__ diff --git a/socket/fmt_ip6if.c b/socket/fmt_ip6if.c index c3d61a1..3b8d72b 100644 --- a/socket/fmt_ip6if.c +++ b/socket/fmt_ip6if.c @@ -3,7 +3,7 @@ #include "fmt.h" #include "socket.h" -size_t fmt_ip6if(char* dest,const char* ip,uint32 scope_id) { +size_t fmt_ip6if(char* dest,const char ip[16],uint32 scope_id) { size_t i=fmt_ip6(dest,ip); if (scope_id) { if (dest) { diff --git a/socket/scan_ip6if.c b/socket/scan_ip6if.c index cb28bb1..d188334 100644 --- a/socket/scan_ip6if.c +++ b/socket/scan_ip6if.c @@ -4,7 +4,7 @@ #include "socket.h" #include "havealloca.h" -size_t scan_ip6if(const char* src,char* ip,uint32* scope_id) { +size_t scan_ip6if(const char* src,char ip[16],uint32* scope_id) { size_t i=scan_ip6(src,ip); *scope_id=0; if (src[i]=='%') { diff --git a/socket/socket_accept4.c b/socket/socket_accept4.c index f399f86..9aa0286 100644 --- a/socket/socket_accept4.c +++ b/socket/socket_accept4.c @@ -16,7 +16,7 @@ #include "io_internal.h" #endif -int socket_accept4(int s,char *ip,uint16 *port) { +int socket_accept4(int s,char ip[4],uint16 *port) { struct sockaddr_in si; socklen_t len = sizeof si; int fd; diff --git a/socket/socket_accept4_flags.c b/socket/socket_accept4_flags.c index 8ffc864..c4b417d 100644 --- a/socket/socket_accept4_flags.c +++ b/socket/socket_accept4_flags.c @@ -10,6 +10,7 @@ #include #include "windoze.h" #include "socket.h" +#include "iarray.h" #include "havesl.h" #ifdef __MINGW32__ @@ -22,13 +23,13 @@ #include "haveaccept4.h" -int socket_accept4_flags(int s, char *ip, uint16 *port, int flags) { +int socket_accept4_flags(int s, char ip[4], uint16 *port, int flags) { struct sockaddr_in si; socklen_t len = sizeof si; int fd; #ifdef __MINGW32__ - io_entry* e=array_get(&io_fds,sizeof(io_entry),s); + io_entry* e=iarray_get(&io_fds,s); if (e && e->inuse) { int sa2len; fd=-1; @@ -42,14 +43,14 @@ incoming: { struct sockaddr* x,* y; GetAcceptExSockaddrs(e->inbuf,0,200,200,&x,&sa2len,&y,&len); - if (len>sizeof(si)) len=sizeof(si); + if ((size_t)len>sizeof(si)) len=sizeof(si); memcpy(&si,y,len); } fd=e->next_accept; e->next_accept=0; if (e->nonblock) { if (io_fd_canwrite(fd)) { - io_entry* f=array_get(&io_fds,sizeof(io_entry),fd); + io_entry* f=iarray_get(&io_fds,fd); if (f) { f->nonblock=1; // printf("setting fd %lu to non-blocking\n",(int)fd); @@ -61,7 +62,7 @@ incoming: /* no accept queued, queue one now. */ if (e->next_accept==0) { e->next_accept=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); - if (e==-1) + if (e->next_accept==(SOCKET)-1) return winsock2errno(-1); } if (AcceptEx(s,e->next_accept,e->inbuf,0,200,200,&e->errorcode,&e->or)) @@ -98,6 +99,7 @@ incoming: /* if we get here, the kernel did not support accept4. */ if ((fd=accept(s,(void*) &si,&len))==-1) return -1; +#ifndef __MINGW32__ if (flags & SOCKET_NONBLOCK) fl |= O_NDELAY; if (flags & SOCKET_CLOEXEC) fl |= O_CLOEXEC; /* On BSD the accepted socket inherits O_NDELAY and O_CLOEXEC, on @@ -114,6 +116,7 @@ incoming: #ifdef __linux__ } #endif +#endif #ifdef HAVE_ACCEPT4 } #endif diff --git a/socket/socket_accept4_makenonblocking.c b/socket/socket_accept4_makenonblocking.c index 424ee89..d4e0300 100644 --- a/socket/socket_accept4_makenonblocking.c +++ b/socket/socket_accept4_makenonblocking.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept4_makenonblocking(int s,char *ip,uint16 *port) { +int socket_accept4_makenonblocking(int s,char ip[4],uint16 *port) { return socket_accept4_flags(s,ip,port,SOCKET_NONBLOCK); } diff --git a/socket/socket_accept4_makenonblocking_setcloseonexec.c b/socket/socket_accept4_makenonblocking_setcloseonexec.c index 64a83f6..d434329 100644 --- a/socket/socket_accept4_makenonblocking_setcloseonexec.c +++ b/socket/socket_accept4_makenonblocking_setcloseonexec.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept4_makenonblocking(int s,char *ip,uint16 *port) { +int socket_accept4_makenonblocking(int s,char ip[4],uint16 *port) { return socket_accept4_flags(s,ip,port,SOCKET_NONBLOCK | SOCKET_CLOEXEC); } diff --git a/socket/socket_accept4_setcloseonexec.c b/socket/socket_accept4_setcloseonexec.c index efa9cfb..ee52223 100644 --- a/socket/socket_accept4_setcloseonexec.c +++ b/socket/socket_accept4_setcloseonexec.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept4_makenonblocking(int s,char *ip,uint16 *port) { +int socket_accept4_makenonblocking(int s,char ip[4],uint16 *port) { return socket_accept4_flags(s,ip,port,SOCKET_CLOEXEC); } diff --git a/socket/socket_accept6.c b/socket/socket_accept6.c index 640a0f8..03f2ce9 100644 --- a/socket/socket_accept6.c +++ b/socket/socket_accept6.c @@ -21,7 +21,7 @@ #include "io_internal.h" #endif -int socket_accept6(int s,char* ip,uint16* port,uint32* scope_id) +int socket_accept6(int s,char ip[16],uint16* port,uint32* scope_id) { #ifdef LIBC_HAS_IP6 struct sockaddr_in6 sa; diff --git a/socket/socket_accept6_flags.c b/socket/socket_accept6_flags.c index 6c6c0bb..ec87bfa 100644 --- a/socket/socket_accept6_flags.c +++ b/socket/socket_accept6_flags.c @@ -1,4 +1,7 @@ #define _GNU_SOURCE +#ifdef __MINGW32__ +#include +#endif #include #include #include @@ -9,6 +12,7 @@ #include #include #endif +#include "iarray.h" #include "windoze.h" #include "byte.h" #include "socket.h" @@ -27,7 +31,7 @@ #include "haveaccept4.h" -int socket_accept6_flags(int s, char* ip, uint16* port, uint32* scope_id, int flags) +int socket_accept6_flags(int s, char ip[16], uint16* port, uint32* scope_id, int flags) { #ifdef LIBC_HAS_IP6 struct sockaddr_in6 sa; @@ -39,7 +43,7 @@ int socket_accept6_flags(int s, char* ip, uint16* port, uint32* scope_id, int fl #ifdef __MINGW32__ // Windows uses overlapped I/O instead of non-blocking I/O - io_entry* e=array_get(&io_fds,sizeof(io_entry),s); + io_entry* e=iarray_get(&io_fds,s); if (e && e->inuse) { int sa2len; fd=-1; @@ -53,14 +57,14 @@ incoming: { struct sockaddr* x,* y; GetAcceptExSockaddrs(e->inbuf,0,200,200,&x,&sa2len,&y,&dummy); - if (dummy>sizeof(sa)) dummy=sizeof(sa); + if ((size_t)dummy>sizeof(sa)) dummy=sizeof(sa); memcpy(&sa,y,dummy); } fd=e->next_accept; e->next_accept=0; if (e->nonblock) { if (io_fd(fd)) { - io_entry* f=array_get(&io_fds,sizeof(io_entry),fd); + io_entry* f=iarray_get(&io_fds,fd); if (f) { f->nonblock=1; // printf("setting fd %lu to non-blocking\n",(int)fd); @@ -72,7 +76,7 @@ incoming: /* no accept queued, queue one now. */ if (e->next_accept==0) { e->next_accept=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); - if (e==-1) + if (e->next_accept==(SOCKET)-1) return winsock2errno(-1); } if (AcceptEx(s,e->next_accept,e->inbuf,0,200,200,&e->errorcode,&e->or)) @@ -108,6 +112,7 @@ incoming: fd = accept(s, (struct sockaddr *) &sa, &dummy); if (fd == -1) return -1; +#ifndef __MINGW32__ if (flags & SOCKET_NONBLOCK) fl |= O_NDELAY; if (flags & SOCKET_CLOEXEC) fl |= O_CLOEXEC; /* On BSD the accepted socket inherits O_NDELAY and O_CLOEXEC, on @@ -124,6 +129,7 @@ incoming: #ifdef __linux__ } #endif +#endif #ifdef HAVE_ACCEPT4 } #endif diff --git a/socket/socket_accept6_makenonblocking.c b/socket/socket_accept6_makenonblocking.c index 1797b3e..3f3fd79 100644 --- a/socket/socket_accept6_makenonblocking.c +++ b/socket/socket_accept6_makenonblocking.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept6_makenonblocking(int s,char *ip,uint16 *port,uint32* scope_id) { +int socket_accept6_makenonblocking(int s,char ip[16],uint16 *port,uint32* scope_id) { return socket_accept6_flags(s,ip,port,scope_id,SOCKET_NONBLOCK); } diff --git a/socket/socket_accept6_makenonblocking_setcloseonexec.c b/socket/socket_accept6_makenonblocking_setcloseonexec.c index e577862..1098320 100644 --- a/socket/socket_accept6_makenonblocking_setcloseonexec.c +++ b/socket/socket_accept6_makenonblocking_setcloseonexec.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept6_makenonblocking(int s,char *ip,uint16 *port,uint32* scope_id) { +int socket_accept6_makenonblocking(int s,char ip[16],uint16 *port,uint32* scope_id) { return socket_accept6_flags(s,ip,port,scope_id,SOCKET_NONBLOCK | SOCKET_CLOEXEC); } diff --git a/socket/socket_accept6_setcloseonexec.c b/socket/socket_accept6_setcloseonexec.c index c135ac6..e6ac0e0 100644 --- a/socket/socket_accept6_setcloseonexec.c +++ b/socket/socket_accept6_setcloseonexec.c @@ -7,6 +7,6 @@ #include "windoze.h" #include "socket.h" -int socket_accept6_makenonblocking(int s,char *ip,uint16 *port,uint32* scope_id) { +int socket_accept6_makenonblocking(int s,char ip[16],uint16 *port,uint32* scope_id) { return socket_accept6_flags(s,ip,port,scope_id,SOCKET_CLOEXEC); } diff --git a/socket/socket_bind4.c b/socket/socket_bind4.c index b0bacee..2c24007 100644 --- a/socket/socket_bind4.c +++ b/socket/socket_bind4.c @@ -9,7 +9,7 @@ #include "uint32.h" #include "socket.h" -int socket_bind4(int s,const char *ip,uint16 port) { +int socket_bind4(int s,const char ip[4],uint16 port) { struct sockaddr_in si; byte_zero(&si,sizeof si); si.sin_family = AF_INET; diff --git a/socket/socket_bind4_reuse.c b/socket/socket_bind4_reuse.c index 1fb39f2..0ac7d67 100644 --- a/socket/socket_bind4_reuse.c +++ b/socket/socket_bind4_reuse.c @@ -5,7 +5,7 @@ #include "socket.h" #include "windoze.h" -int socket_bind4_reuse(int s,const char *ip,uint16 port) { +int socket_bind4_reuse(int s,const char ip[4],uint16 port) { int one=1; setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&one,sizeof one); #ifdef SO_REUSEPORT diff --git a/socket/socket_bind6_reuse.c b/socket/socket_bind6_reuse.c index 6d23941..16035ed 100644 --- a/socket/socket_bind6_reuse.c +++ b/socket/socket_bind6_reuse.c @@ -5,7 +5,7 @@ #include "socket.h" #include "windoze.h" -int socket_bind6_reuse(int s,const char *ip,uint16 port,uint32 scope_id) { +int socket_bind6_reuse(int s,const char ip[16],uint16 port,uint32 scope_id) { int one=1; setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&one,sizeof one); #ifdef SO_REUSEPORT diff --git a/socket/socket_connect4.c b/socket/socket_connect4.c index 95f7230..32f1dd7 100644 --- a/socket/socket_connect4.c +++ b/socket/socket_connect4.c @@ -10,7 +10,7 @@ #include "uint16.h" #include "uint32.h" -int socket_connect4(int s,const char *ip,uint16 port) { +int socket_connect4(int s,const char ip[4],uint16 port) { struct sockaddr_in si; byte_zero(&si,sizeof(si)); si.sin_family=AF_INET; diff --git a/socket/socket_fastopen_connect4.c b/socket/socket_fastopen_connect4.c index 5b38dc6..728f1cd 100644 --- a/socket/socket_fastopen_connect4.c +++ b/socket/socket_fastopen_connect4.c @@ -8,7 +8,7 @@ #endif #include -ssize_t socket_fastopen_connect4(int s,const char* ip,uint16 port,const char* buf,size_t len) { +ssize_t socket_fastopen_connect4(int s,const char ip[4],uint16 port,const char* buf,size_t len) { int r; #ifndef MSG_FASTOPEN { diff --git a/socket/socket_fastopen_connect6.c b/socket/socket_fastopen_connect6.c index b6f121b..579473c 100644 --- a/socket/socket_fastopen_connect6.c +++ b/socket/socket_fastopen_connect6.c @@ -8,7 +8,7 @@ #endif #include -ssize_t socket_fastopen_connect6(int s,const char* ip,uint16 port,uint32_t scope_id,const char* buf,size_t len) { +ssize_t socket_fastopen_connect6(int s,const char ip[16],uint16 port,uint32_t scope_id,const char* buf,size_t len) { #ifndef MSG_FASTOPEN int r; {