diff --git a/src/glb_env.c b/src/glb_env.c index d70f7f4..40f6513 100644 --- a/src/glb_env.c +++ b/src/glb_env.c @@ -289,9 +289,12 @@ glb_env_parse () failure: + /* on failure, ret may be freed */ + if (tmp != NULL) { if (ret->verbose) glb_cnf_print(stderr, ret); if (ret->watchdog) free ((void*)ret->watchdog); free (ret); + } return NULL; } diff --git a/src/glb_socket.c b/src/glb_socket.c index e61369c..1748c29 100644 --- a/src/glb_socket.c +++ b/src/glb_socket.c @@ -18,6 +18,9 @@ #include #include #include +#ifndef GLBD +#include +#endif #if defined(__APPLE__) || defined(__FreeBSD__) # define SOL_TCP IPPROTO_TCP #endif @@ -83,6 +86,7 @@ glb_sockaddr_init (glb_sockaddr_t* addr, const char* hostname, uint16_t port) { +#ifdef GLBD struct hostent* host = gethostbyname (hostname); if (host == NULL) @@ -93,6 +97,12 @@ glb_sockaddr_init (glb_sockaddr_t* addr, memset (addr, 0, sizeof(*addr)); addr->sin_addr = *(struct in_addr *) host->h_addr; +#else + memset (addr, 0, sizeof(*addr)); + if (inet_aton(hostname, &addr->sin_addr) != 1) + return -EINVAL; +#endif /* GLBD */ + addr->sin_port = htons (port); addr->sin_family = AF_INET;