Issue : 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:
Andrew Bettison 2013-10-08 15:39:29 +10:30
parent 9ba08e465f
commit 2119433bb0
3 changed files with 16 additions and 15 deletions

@ -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];