From 41d8deff88ed7bdaf1820882687fb99107f60d2a Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 18 Sep 2011 17:32:15 -0500 Subject: be_local: cope with a desc file without trailing newline We checked the (fgets == NULL and !feof) case, but never actually bailed out of the loop if we were at the end of the file, causing infinite looping. Signed-off-by: Dan McGee --- lib/libalpm/be_local.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 552f7dd9..1b828d9c 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -500,14 +500,18 @@ static char *get_pkgpath(alpm_db_t *db, alpm_pkg_t *info) #define READ_AND_STORE_ALL(f) do { \ char *linedup; \ - if(fgets(line, sizeof(line), fp) == NULL && !feof(fp)) goto error; \ + if(fgets(line, sizeof(line), fp) == NULL) {\ + if(!feof(fp)) goto error; else break; \ + } \ if(_alpm_strip_newline(line) == 0) break; \ STRDUP(linedup, line, goto error); \ f = alpm_list_add(f, linedup); \ } while(1) /* note the while(1) and not (0) */ #define READ_AND_SPLITDEP(f) do { \ - if(fgets(line, sizeof(line), fp) == NULL && !feof(fp)) goto error; \ + if(fgets(line, sizeof(line), fp) == NULL) {\ + if(!feof(fp)) goto error; else break; \ + } \ if(_alpm_strip_newline(line) == 0) break; \ f = alpm_list_add(f, _alpm_splitdep(line)); \ } while(1) /* note the while(1) and not (0) */ -- cgit v1.2.3-70-g09d2