diff --git a/ares/ares_gethostbyaddr.c b/ares/ares_gethostbyaddr.c index 41bf916bf..6c80eb941 100644 --- a/ares/ares_gethostbyaddr.c +++ b/ares/ares_gethostbyaddr.c @@ -216,9 +216,26 @@ static int file_lookup(union ares_addr *addr, int family, struct hostent **host) return ARES_ENOTFOUND; #endif + int error; + fp = fopen(PATH_HOSTS, "r"); if (!fp) - return ARES_ENOTFOUND; + { + error = ERRNO; + switch(error) + { + case ENOENT: + return ARES_ENOTFOUND; + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", + error, strerror(error))); + DEBUGF(fprintf(stderr, "Error opening file: %s\n", + PATH_HOSTS)); + *host = NULL; + return ARES_EFILE; + } + } while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS) { if (family != (*host)->h_addrtype) diff --git a/ares/ares_search.c b/ares/ares_search.c index b05b4a833..e63afff05 100644 --- a/ares/ares_search.c +++ b/ares/ares_search.c @@ -216,6 +216,7 @@ static int single_domain(ares_channel channel, const char *name, char **s) char *line = NULL; int linesize, status; const char *p, *q; + int error; /* If the name contains a trailing dot, then the single query is the name * sans the trailing dot. @@ -265,6 +266,22 @@ static int single_domain(ares_channel channel, const char *name, char **s) if (status != ARES_SUCCESS) return status; } + else + { + error = ERRNO; + switch(error) + { + case ENOENT: + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", + error, strerror(error))); + DEBUGF(fprintf(stderr, "Error opening file: %s\n", + hostaliases)); + *s = NULL; + return ARES_EFILE; + } + } } } diff --git a/tests/libtest/lib505.c b/tests/libtest/lib505.c index 85ce38b32..098e8f9e0 100644 --- a/tests/libtest/lib505.c +++ b/tests/libtest/lib505.c @@ -43,6 +43,7 @@ int test(char *URL) int hd ; struct_stat file_info; struct curl_slist *hl; + int error; struct curl_slist *headerlist=NULL; const char *buf_1 = "RNFR 505"; @@ -57,6 +58,9 @@ int test(char *URL) hd = stat(arg2, &file_info); if(hd == -1) { /* can't open file, bail out */ + error = ERRNO; + fprintf(stderr, "stat() failed with error: %d %s\n", + error, strerror(error)); fprintf(stderr, "WARNING: cannot open file %s\n", arg2); return -1; } @@ -71,6 +75,10 @@ int test(char *URL) an example! */ hd_src = fopen(arg2, "rb"); if(NULL == hd_src) { + error = ERRNO; + fprintf(stderr, "fopen() failed with error: %d %s\n", + error, strerror(error)); + fprintf(stderr, "Error opening file: %s\n", arg2); return -2; /* if this happens things are major weird */ } diff --git a/tests/libtest/lib525.c b/tests/libtest/lib525.c index ce12b3b84..14e0c0c76 100644 --- a/tests/libtest/lib525.c +++ b/tests/libtest/lib525.c @@ -25,6 +25,7 @@ int test(char *URL) CURL *curl; FILE *hd_src ; int hd ; + int error; struct_stat file_info; int running; char done=FALSE; @@ -48,6 +49,13 @@ int test(char *URL) fdopen() from the previous descriptor, but hey this is just an example! */ hd_src = fopen(arg2, "rb"); + if(NULL == hd_src) { + error = ERRNO; + fprintf(stderr, "fopen() failed with error: %d %s\n", + error, strerror(error)); + fprintf(stderr, "Error opening file: %s\n", arg2); + return TEST_ERR_MAJOR_BAD; + } if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { fprintf(stderr, "curl_global_init() failed\n");