From: graham.gower Date: Wed, 18 Nov 2009 01:37:40 +0000 (+0000) Subject: Fix segfault while attempting to parse invalid package stream. X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e3f3fb8c73124f354fadf11ee7fe0d0b5e358763;p=oweals%2Fopkg-lede.git Fix segfault while attempting to parse invalid package stream. Reported by John L. Chmielewski. git-svn-id: http://opkg.googlecode.com/svn/trunk@331 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- diff --git a/libopkg/pkg_parse.c b/libopkg/pkg_parse.c index 246705e..a51a3e1 100644 --- a/libopkg/pkg_parse.c +++ b/libopkg/pkg_parse.c @@ -152,6 +152,7 @@ pkg_parse_line(pkg_t *pkg, const char *line, uint mask) { /* these flags are a bit hackish... */ static int reading_conffiles = 0, reading_description = 0; + int ret = 0; switch (*line) { case 'A': @@ -279,12 +280,14 @@ pkg_parse_line(pkg_t *pkg, const char *line, uint mask) parse_conffiles(pkg, line); goto dont_reset_flags; } - break; + /* FALLTHROUGH */ default: /* For package lists, signifies end of package. */ - if(line_is_blank(line)) - return 1; + if(line_is_blank(line)) { + ret = 1; + break; + } } reading_description = 0; @@ -292,7 +295,7 @@ pkg_parse_line(pkg_t *pkg, const char *line, uint mask) dont_reset_flags: - return 0; + return ret; } int