[CLEANUP] add a few checks for functions return values

Markus Elfring suggested adding a few checks which were missing
after a bunch of getsockopt() and 2 strdup(). While those are
unlikely to fail where they are used, it makes the code cleaner.
This commit is contained in:
Willy Tarreau 2006-10-15 14:59:03 +02:00
parent 2a429503e0
commit c642348ce4
3 changed files with 12 additions and 9 deletions

View File

@ -176,9 +176,7 @@ int event_srv_chk_r(int fd)
socklen_t lskerr = sizeof(skerr);
result = len = -1;
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (!skerr) {
if (!getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr) && !skerr) {
#ifndef MSG_NOSIGNAL
len = recv(fd, reply, sizeof(reply), 0);
#else

View File

@ -96,6 +96,8 @@ struct sockaddr_in *str2sa(char *str)
memset(&sa, 0, sizeof(sa));
str = strdup(str);
if (str == NULL)
goto out_nofree;
if ((c = strrchr(str,':')) != NULL) {
*c++ = '\0';
@ -120,6 +122,7 @@ struct sockaddr_in *str2sa(char *str)
sa.sin_family = AF_INET;
free(str);
out_nofree:
return &sa;
}
@ -137,6 +140,8 @@ int str2net(char *str, struct in_addr *addr, struct in_addr *mask)
memset(mask, 0, sizeof(*mask));
memset(addr, 0, sizeof(*addr));
str = strdup(str);
if (str == NULL)
return 0;
if ((c = strrchr(str, '/')) != NULL) {
*c++ = '\0';

View File

@ -86,8 +86,8 @@ int stream_sock_read(int fd) {
int skerr;
socklen_t lskerr = sizeof(skerr);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (skerr)
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (ret == -1 || skerr)
ret = -1;
else
ret = recv(fd, b->r, max, 0);
@ -171,8 +171,8 @@ int stream_sock_write(int fd) {
if (fdtab[fd].state == FD_STCONN) {
int skerr;
socklen_t lskerr = sizeof(skerr);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (skerr) {
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (ret == -1 || skerr) {
b->flags |= BF_WRITE_ERROR;
fdtab[fd].state = FD_STERROR;
task_wakeup(&rq, fdtab[fd].owner);
@ -195,8 +195,8 @@ int stream_sock_write(int fd) {
int skerr;
socklen_t lskerr = sizeof(skerr);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (skerr)
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
if (ret == -1 || skerr)
ret = -1;
else
ret = send(fd, b->w, max, MSG_DONTWAIT);