From e3f3fb8c73124f354fadf11ee7fe0d0b5e358763 Mon Sep 17 00:00:00 2001 From: graham.gower Date: Tue, 17 Nov 2009 20:37:40 -0500 Subject: 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 --- (limited to 'libopkg/pkg_parse.c') 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 -- cgit v0.9.1