apps/examples/udgram: Improve some size tests and improve error reporting

This commit is contained in:
Gregory Nutt 2015-01-28 14:58:22 -06:00
parent e2327502f8
commit e6f43d2ed8

View File

@ -145,7 +145,7 @@ int server_main(int argc, char *argv[])
nbytes = recvfrom(sockfd, inbuf, 1024, 0,
(struct sockaddr*)&client, &recvlen);
if (recvlen < sizeof(sa_family_t))
if (recvlen < sizeof(sa_family_t) || recvlen > sizeof(struct sockaddr_un))
{
printf("server: %d. ERROR Received %d bytes from client with invalid length %d\n",
offset, nbytes, recvlen);
@ -159,11 +159,24 @@ int server_main(int argc, char *argv[])
{
printf("server: %d. Received %d bytes from an abstract client\n",
offset, nbytes);
if (client.sun_path[0] != '\0')
{
printf("server: ERROR path not NUL terminated\n");
}
}
else /* if (recvlen > sizeof(sa_family_t) */
else /* if (recvlen > sizeof(sa_family_t)+1 &&
recvlen <= sizeof(struct sockaddr_un)) */
{
printf("server: %d. Received %d bytes from a client %s\n",
int pathlen = recvlen - sizeof(sa_family_t) - 1;
printf("server: %d. Received %d bytes from a pathname client %s\n",
offset, nbytes, client.sun_path);
if (client.sun_path[pathlen] != '\0')
{
printf("server: ERROR path not NUL terminated\n");
}
}
if (nbytes < 0)