diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-01-28 14:58:22 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-01-28 14:58:22 -0600 |
commit | 41ebf460bbc7a785cecf431f1102f9bd6de37a9e (patch) | |
tree | 1ce615ddad9c069381bf97f0b5664024fdbc1ef3 /apps/examples | |
parent | 3321323bd9631a91e187c5d553d3d2dad419b05c (diff) | |
download | nuttx-41ebf460bbc7a785cecf431f1102f9bd6de37a9e.tar.gz nuttx-41ebf460bbc7a785cecf431f1102f9bd6de37a9e.tar.bz2 nuttx-41ebf460bbc7a785cecf431f1102f9bd6de37a9e.zip |
apps/examples/udgram: Improve some size tests and improve error reporting
Diffstat (limited to 'apps/examples')
-rw-r--r-- | apps/examples/udgram/udgram_server.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/apps/examples/udgram/udgram_server.c b/apps/examples/udgram/udgram_server.c index 756f2113f..8b21b7c43 100644 --- a/apps/examples/udgram/udgram_server.c +++ b/apps/examples/udgram/udgram_server.c @@ -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) |