aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ares/ares_gethostbyaddr.c19
-rw-r--r--ares/ares_search.c17
-rw-r--r--tests/libtest/lib505.c8
-rw-r--r--tests/libtest/lib525.c8
4 files changed, 51 insertions, 1 deletions
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");