[Commits] [SCM] claws branch, master, updated. 3.18.0-188-g9f8c2f755
wwp at claws-mail.org
wwp at claws-mail.org
Tue Sep 28 15:49:54 CEST 2021
The branch, master has been updated
via 9f8c2f7553ef5010e31d603b550fe09cd207b0ec (commit)
from 3b1b0406282b260339f3bb070d515d829036b5f4 (commit)
Summary of changes:
src/plugins/rssyl/libfeed/feed.c | 6 ++++--
src/plugins/rssyl/libfeed/parser_opml.c | 35 +++++++++++++++++--------------
src/plugins/rssyl/parse822.c | 9 +++++---
src/plugins/rssyl/rssyl.c | 12 ++++++-----
src/plugins/rssyl/rssyl_deleted.c | 6 ++++--
src/plugins/rssyl/rssyl_update_comments.c | 4 +++-
src/plugins/rssyl/rssyl_update_format.c | 2 ++
7 files changed, 45 insertions(+), 29 deletions(-)
- Log -----------------------------------------------------------------
commit 9f8c2f7553ef5010e31d603b550fe09cd207b0ec
Author: wwp <subscript at free.fr>
Date: Tue Sep 28 15:49:39 2021 +0200
Fix CID 1491122, 1491118, 1491138, 1491092, 1491098 and 1491340: resource leaks.
Fix an extra leaks in opml parsing.
Fix CID 1491366: unchecked return value.
diff --git a/src/plugins/rssyl/libfeed/feed.c b/src/plugins/rssyl/libfeed/feed.c
index 56f693ac5..cac9af825 100644
--- a/src/plugins/rssyl/libfeed/feed.c
+++ b/src/plugins/rssyl/libfeed/feed.c
@@ -348,8 +348,10 @@ cleanup:
/* Cleanup, we should be done. */
XML_ParserFree(feed_ctx->parser);
- g_free(feed_ctx->name);
- g_free(feed_ctx->mail);
+ if (feed_ctx->name != NULL)
+ g_free(feed_ctx->name);
+ if (feed_ctx->mail != NULL)
+ g_free(feed_ctx->mail);
if (feed_ctx->str != NULL)
g_string_free(feed_ctx->str, TRUE);
if (feed_ctx->xhtml_str != NULL)
diff --git a/src/plugins/rssyl/libfeed/parser_opml.c b/src/plugins/rssyl/libfeed/parser_opml.c
index 4e3484141..575ffc9d3 100644
--- a/src/plugins/rssyl/libfeed/parser_opml.c
+++ b/src/plugins/rssyl/libfeed/parser_opml.c
@@ -102,30 +102,33 @@ void opml_process(gchar *path, OPMLProcessFunc function, gpointer data)
XML_SetUnknownEncodingHandler(ctx->parser,
feed_parser_unknown_encoding_handler, NULL);
- g_file_get_contents(path, &contents, NULL, &error);
-
- if( error || !contents )
- return;
+ if( !g_file_get_contents(path, &contents, NULL, &error) ) {
+ g_warning("error: '%s'", error->message);
+ g_error_free(error);
+ }
+ if( contents ) {
/*
- lines = g_strsplit(contents, '\n', 0);
+ lines = g_strsplit(contents, '\n', 0);
- while( lines[i] ) {
- status = XML_Parse(ctx->parser, lines[i], strlen(lines[i]), FALSE);
- if( status == XML_STATUS_ERROR ) {
- err = XML_GetErrorCode(ctx->parser);
- sprintf(stderr, "\nExpat: --- %s\n\n", XML_ErrorString(err));
+ while( lines[i] ) {
+ status = XML_Parse(ctx->parser, lines[i], strlen(lines[i]), FALSE);
+ if( status == XML_STATUS_ERROR ) {
+ err = XML_GetErrorCode(ctx->parser);
+ sprintf(stderr, "\nExpat: --- %s\n\n", XML_ErrorString(err));
+ }
}
- }
*/
-
- status = XML_Parse(ctx->parser, contents, strlen(contents), FALSE);
- err = XML_GetErrorCode(ctx->parser);
- fprintf(stderr, "\nExpat: --- %s (%s)\n\n", XML_ErrorString(err),
+ status = XML_Parse(ctx->parser, contents, strlen(contents), FALSE);
+ err = XML_GetErrorCode(ctx->parser);
+ fprintf(stderr, "\nExpat: --- %s (%s)\n\n", XML_ErrorString(err),
(status == XML_STATUS_OK ? "OK" : "NOT OK"));
- XML_Parse(ctx->parser, "", 0, TRUE);
+ XML_Parse(ctx->parser, "", 0, TRUE);
+ }
XML_ParserFree(ctx->parser);
+ if (ctx->str != NULL)
+ g_string_free(ctx->str, TRUE);
g_free(ctx);
}
diff --git a/src/plugins/rssyl/parse822.c b/src/plugins/rssyl/parse822.c
index c675e4376..af9f2206c 100644
--- a/src/plugins/rssyl/parse822.c
+++ b/src/plugins/rssyl/parse822.c
@@ -62,9 +62,7 @@ FeedItem *rssyl_parse_folder_item_file(gchar *path)
debug_print("RSSyl: parsing '%s'\n", path);
- g_file_get_contents(path, &contents, NULL, &error);
-
- if( error ) {
+ if( !g_file_get_contents(path, &contents, NULL, &error) ) {
g_warning("error: '%s'", error->message);
g_error_free(error);
}
@@ -198,6 +196,11 @@ FeedItem *rssyl_parse_folder_item_file(gchar *path)
if( !strcmp(lines[i], RSSYL_TEXT_START) ) {
debug_print("RSSyl: Leading html tag found at line %d\n", i);
past_html_tag = TRUE;
+ if (body)
+ {
+ g_warning("unexpected leading html tag found at line %d", i);
+ g_string_free(body, TRUE);
+ }
body = g_string_new("");
i++;
continue;
diff --git a/src/plugins/rssyl/rssyl.c b/src/plugins/rssyl/rssyl.c
index 3a9517dcd..943e37e99 100644
--- a/src/plugins/rssyl/rssyl.c
+++ b/src/plugins/rssyl/rssyl.c
@@ -928,7 +928,7 @@ static gboolean rssyl_subscribe_uri(Folder *folder, const gchar *uri)
static void rssyl_copy_private_data(Folder *folder, FolderItem *oldi,
FolderItem *newi)
{
- gchar *dpathold, *dpathnew;
+ gchar *dpathold, *dpathnew, *pathold, *pathnew;
RFolderItem *olditem = (RFolderItem *)oldi,
*newitem = (RFolderItem *)newi;
@@ -984,11 +984,13 @@ static void rssyl_copy_private_data(Folder *folder, FolderItem *oldi,
newitem->fetching_comments = olditem->fetching_comments;
newitem->last_update = olditem->last_update;
- dpathold = g_strconcat(rssyl_item_get_path(oldi->folder, oldi),
- G_DIR_SEPARATOR_S, RSSYL_DELETED_FILE, NULL);
- dpathnew = g_strconcat(rssyl_item_get_path(newi->folder, newi),
- G_DIR_SEPARATOR_S, RSSYL_DELETED_FILE, NULL);
+ pathold = rssyl_item_get_path(oldi->folder, oldi);
+ dpathold = g_strconcat(pathold, G_DIR_SEPARATOR_S, RSSYL_DELETED_FILE, NULL);
+ pathnew = rssyl_item_get_path(newi->folder, newi);
+ dpathnew = g_strconcat(pathnew, G_DIR_SEPARATOR_S, RSSYL_DELETED_FILE, NULL);
move_file(dpathold, dpathnew, TRUE);
+ g_free(pathold);
+ g_free(pathnew);
g_free(dpathold);
g_free(dpathnew);
diff --git a/src/plugins/rssyl/rssyl_deleted.c b/src/plugins/rssyl/rssyl_deleted.c
index 3cc5325fb..32c0c34a5 100644
--- a/src/plugins/rssyl/rssyl_deleted.c
+++ b/src/plugins/rssyl/rssyl_deleted.c
@@ -120,8 +120,6 @@ void rssyl_deleted_update(RFolderItem *ritem)
return;
}
- g_free(deleted_file);
-
while (lines[i]) {
line = g_strsplit(lines[i], ": ", 2);
if (line[0] && line[1] && strlen(line[0]) && strlen(line[1])) {
@@ -140,6 +138,10 @@ void rssyl_deleted_update(RFolderItem *ritem)
g_strfreev(line);
i++;
}
+ if (ditem)
+ g_warning("short read while parsing the list of deleted items for '%s'\n",
+ deleted_file);
+ g_free(deleted_file);
g_free(lines);
g_free(contents);
diff --git a/src/plugins/rssyl/rssyl_update_comments.c b/src/plugins/rssyl/rssyl_update_comments.c
index ae831ed48..cf6c618a2 100644
--- a/src/plugins/rssyl/rssyl_update_comments.c
+++ b/src/plugins/rssyl/rssyl_update_comments.c
@@ -94,8 +94,10 @@ void rssyl_update_comments(RFolderItem *ritem)
if( (num = to_number(d)) > 0) {
fname = g_strdup_printf("%s%c%s", path, G_DIR_SEPARATOR, d);
- if (!g_file_test(fname, G_FILE_TEST_IS_REGULAR))
+ if (!g_file_test(fname, G_FILE_TEST_IS_REGULAR)) {
+ g_free(fname);
continue;
+ }
debug_print("RSSyl: starting to parse '%s'\n", d);
diff --git a/src/plugins/rssyl/rssyl_update_format.c b/src/plugins/rssyl/rssyl_update_format.c
index 448042944..973458772 100644
--- a/src/plugins/rssyl/rssyl_update_format.c
+++ b/src/plugins/rssyl/rssyl_update_format.c
@@ -255,6 +255,8 @@ static void rssyl_update_format_move_contents(FolderItem *olditem,
if ((d = g_dir_open(oldpath, 0, &error)) == NULL) {
debug_print("RSSyl: (FORMAT) couldn't open dir '%s': %s\n", oldpath,
error->message);
+ g_free(oldpath);
+ g_free(newpath);
g_error_free(error);
return;
}
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list