From c07ea9d0a05ec09568ffa2b804b90b1551669517 Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Fri, 21 Mar 2014 14:43:27 -0400 Subject: [PATCH] return NULL from psl_load_file() if the file could not be read. --- src/psl.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/psl.c b/src/psl.c index cd3e5fa..88ccc9e 100644 --- a/src/psl.c +++ b/src/psl.c @@ -275,12 +275,12 @@ psl_ctx_t *psl_load_file(const char *fname) if (!(psl = calloc(1, sizeof(psl_ctx_t)))) return NULL; - // as of 02.11.2012, the list at http://publicsuffix.org/list/ contains ~6000 rules and 40 exceptions. - // as of 19.02.2014, the list at http://publicsuffix.org/list/ contains ~6500 rules and 19 exceptions. - psl->suffixes = _vector_alloc(8*1024, _suffix_compare); - psl->suffix_exceptions = _vector_alloc(64, _suffix_compare); - if ((fp = fopen(fname, "r"))) { + // as of 02.11.2012, the list at http://publicsuffix.org/list/ contains ~6000 rules and 40 exceptions. + // as of 19.02.2014, the list at http://publicsuffix.org/list/ contains ~6500 rules and 19 exceptions. + psl->suffixes = _vector_alloc(8*1024, _suffix_compare); + psl->suffix_exceptions = _vector_alloc(64, _suffix_compare); + while ((linep = fgets(buf, sizeof(buf), fp))) { while (isspace(*linep)) linep++; // ignore leading whitespace if (!*linep) continue; // skip empty lines @@ -312,8 +312,10 @@ psl_ctx_t *psl_load_file(const char *fname) _vector_sort(psl->suffix_exceptions); _vector_sort(psl->suffixes); - } else - fprintf(stderr, _("Failed to open PSL file '%s'\n"), fname); + } else { + free(psl); + return NULL; + } return psl; }