mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-04-24 13:05:52 +00:00
Issue #11: fix printf "%zd" ssize_t warnings on Android
Also use ssize_t instead of 'int' in a few suitable places
This commit is contained in:
parent
9ba08e465f
commit
2119433bb0
14
mdp_client.c
14
mdp_client.c
@ -33,7 +33,7 @@ int overlay_mdp_send(int mdp_sockfd, overlay_mdp_frame *mdp, int flags, int time
|
||||
if (mdp_sockfd == -1)
|
||||
return -1;
|
||||
// Minimise frame length to save work and prevent accidental disclosure of memory contents.
|
||||
int len = overlay_mdp_relevant_bytes(mdp);
|
||||
ssize_t len = overlay_mdp_relevant_bytes(mdp);
|
||||
if (len < 0)
|
||||
return WHY("MDP frame invalid (could not compute length)");
|
||||
/* Construct name of socket to send to. */
|
||||
@ -185,9 +185,11 @@ int overlay_mdp_recv(int mdp_sockfd, overlay_mdp_frame *mdp, int port, int *ttl)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int expected_len = overlay_mdp_relevant_bytes(mdp);
|
||||
if (len < expected_len)
|
||||
return WHYF("Expected packet length of %d, received only %zd bytes", expected_len, len);
|
||||
ssize_t expected_len = overlay_mdp_relevant_bytes(mdp);
|
||||
if (expected_len < 0)
|
||||
return WHY("unsupported MDP packet type");
|
||||
if ((size_t)len < (size_t)expected_len)
|
||||
return WHYF("Expected packet length of %zu, received only %zd bytes", (size_t) expected_len, (size_t) len);
|
||||
|
||||
/* Valid packet received */
|
||||
return 0;
|
||||
@ -235,9 +237,9 @@ int overlay_mdp_getmyaddr(int mdp_sockfd, unsigned index, sid_t *sid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int overlay_mdp_relevant_bytes(overlay_mdp_frame *mdp)
|
||||
ssize_t overlay_mdp_relevant_bytes(overlay_mdp_frame *mdp)
|
||||
{
|
||||
int len;
|
||||
size_t len;
|
||||
switch(mdp->packetTypeAndFlags&MDP_TYPE_MASK)
|
||||
{
|
||||
case MDP_ROUTING_TABLE:
|
||||
|
@ -40,6 +40,6 @@ int overlay_mdp_getmyaddr(int mpd_sockfd, unsigned index, sid_t *sid);
|
||||
int overlay_mdp_bind(int mdp_sockfd, const sid_t *localaddr, int port) ;
|
||||
int overlay_mdp_recv(int mdp_sockfd, overlay_mdp_frame *mdp, int port, int *ttl);
|
||||
int overlay_mdp_send(int mdp_sockfd, overlay_mdp_frame *mdp,int flags,int timeout_ms);
|
||||
int overlay_mdp_relevant_bytes(overlay_mdp_frame *mdp);
|
||||
ssize_t overlay_mdp_relevant_bytes(overlay_mdp_frame *mdp);
|
||||
|
||||
#endif
|
||||
|
@ -133,11 +133,9 @@ int overlay_mdp_reply_error(int sock,
|
||||
int overlay_mdp_reply(int sock,struct sockaddr_un *recvaddr, socklen_t recvaddrlen,
|
||||
overlay_mdp_frame *mdpreply)
|
||||
{
|
||||
int replylen;
|
||||
|
||||
if (!recvaddr) return WHY("No reply address");
|
||||
|
||||
replylen=overlay_mdp_relevant_bytes(mdpreply);
|
||||
ssize_t replylen = overlay_mdp_relevant_bytes(mdpreply);
|
||||
if (replylen<0) return WHY("Invalid MDP frame (could not compute length)");
|
||||
|
||||
errno=0;
|
||||
@ -436,18 +434,19 @@ static int overlay_saw_mdp_frame(struct overlay_frame *frame, overlay_mdp_frame
|
||||
struct sockaddr_un addr;
|
||||
addr.sun_family = AF_UNIX;
|
||||
bcopy(mdp_bindings[match].socket_name, addr.sun_path, mdp_bindings[match].name_len);
|
||||
int len=overlay_mdp_relevant_bytes(mdp);
|
||||
ssize_t len = overlay_mdp_relevant_bytes(mdp);
|
||||
if (len < 0)
|
||||
RETURN(WHY("unsupported MDP packet type"));
|
||||
socklen_t addrlen = sizeof addr.sun_family + mdp_bindings[match].name_len;
|
||||
int r = sendto(mdp_sock.poll.fd,mdp,len,0,(struct sockaddr*)&addr, addrlen);
|
||||
if (r == overlay_mdp_relevant_bytes(mdp))
|
||||
if (r == len)
|
||||
RETURN(0);
|
||||
WHYF("didn't send mdp packet to %s", alloca_sockaddr(&addr, addrlen));
|
||||
if (r == -1 && errno == ENOENT) {
|
||||
/* far-end of socket has died, so drop binding */
|
||||
INFOF("Closing dead MDP client '%s'",mdp_bindings[match].socket_name);
|
||||
overlay_mdp_releasebindings(&addr,mdp_bindings[match].name_len);
|
||||
}
|
||||
WHY_perror("sendto(e)");
|
||||
WHYF_perror("sendto(fd=%d,len=%zu,addr=%s)", mdp_sock.poll.fd, (size_t)len, alloca_sockaddr(&addr, addrlen));
|
||||
RETURN(WHY("Failed to pass received MDP frame to client"));
|
||||
} else {
|
||||
/* No socket is bound, ignore the packet ... except for magic sockets */
|
||||
@ -933,7 +932,7 @@ void overlay_mdp_poll(struct sched_ent *alarm)
|
||||
|
||||
if (len > 0) {
|
||||
if (recvaddrlen <= sizeof(sa_family_t))
|
||||
WHYF("got recvaddrlen=%d too short -- ignoring frame len=%zd", (int)recvaddrlen, len);
|
||||
WHYF("got recvaddrlen=%d too short -- ignoring frame len=%zu", (int)recvaddrlen, (size_t)len);
|
||||
else {
|
||||
/* Look at overlay_mdp_frame we have received */
|
||||
overlay_mdp_frame *mdp=(overlay_mdp_frame *)&buffer[0];
|
||||
|
Loading…
x
Reference in New Issue
Block a user