From 87d1f3f2764a10c48ab30f1d602ef38197587623 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Mon, 25 Jan 2016 19:48:54 +0100 Subject: bookmarks dpi: add more error handling to bw.txt parser --- dpi/bookmarks.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'dpi') diff --git a/dpi/bookmarks.c b/dpi/bookmarks.c index 32dc424f..f0467a8b 100644 --- a/dpi/bookmarks.c +++ b/dpi/bookmarks.c @@ -740,11 +740,20 @@ static int Bms_load(void) if (buf[0] == 's') { /* get section, url and title */ section = strtol(buf + 1, NULL, 10); - p = strchr(buf, ' '); *p = 0; + p = strchr(buf, ' '); + if (!p) + goto error; + *p = 0; url = ++p; - p = strchr(p, ' '); *p = 0; + p = strchr(p, ' '); + if (!p) + goto error; + *p = 0; title = ++p; - p = strchr(p, '\n'); *p = 0; + p = strchr(p, '\n'); + if (!p) + goto error; + *p = 0; u_title = Unescape_html_str(title); Bms_add(section, url, u_title); dFree(u_title); @@ -752,13 +761,22 @@ static int Bms_load(void) } else if (buf[0] == ':' && buf[1] == 's') { /* section = strtol(buf + 2, NULL, 10); */ p = strchr(buf + 2, ' '); + if (!p) + goto error; title = ++p; p = strchr(p, '\n'); *p = 0; + if (!p) + goto error; Bms_sec_add(title); - } else { - MSG("Syntax error in bookmarks file:\n %s", buf); + goto error; } + + dFree(buf); + continue; + +error: + MSG("Syntax error in bookmarks file:\n %s", buf); dFree(buf); } fclose(BmTxt); -- cgit v1.2.3