/pidgin/main: ee9d95cb8ee6: Fix coverity log_reader issues
Tomasz Wasilczyk <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: ee9d95cb8ee629b9b7473d920c4101fce01e5869 Author: Tomasz Wasilczyk <[email protected]> Date: 2014-05-12 21:22 +0200 Branch: release-2.x.y URL: https://hg.pidgin.im/pidgin/main/rev/ee9d95cb8ee6 Description: Fix coverity log_reader issues diffstat: libpurple/plugins/log_reader.c | 27 ++++++++++++++++++--------- 1 files changed, 18 insertions(+), 9 deletions(-) diffs (66 lines): diff --git a/libpurple/plugins/log_reader.c b/libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c +++ b/libpurple/plugins/log_reader.c @@ -1422,12 +1422,16 @@ static char * trillian_logger_read (Purp purple_debug_info("Trillian log read", "Reading %s\n", data->path); - read = g_malloc(data->length + 2); - file = g_fopen(data->path, "rb"); g_return_val_if_fail(file != NULL, g_strdup("")); - if (fseek(file, data->offset, SEEK_SET) != 0) + + read = g_malloc(data->length + 2); + + if (fseek(file, data->offset, SEEK_SET) != 0) { + fclose(file); + g_free(read); g_return_val_if_reached(g_strdup("")); + } data->length = fread(read, 1, data->length, file); fclose(file); @@ -1849,8 +1853,7 @@ static GList *qip_logger_list(PurpleLogT } else { while (*c) c++; - if (c) - c--; + c--; c = g_strrstr(c, "("); } @@ -1953,8 +1956,11 @@ static char *qip_logger_read(PurpleLog * contents = g_malloc(data->length + 2); - if (fseek(file, data->offset, SEEK_SET) != 0) + if (fseek(file, data->offset, SEEK_SET) != 0) { + fclose(file); + g_free(contents); g_return_val_if_reached(g_strdup("")); + } data->length = fread(contents, 1, data->length, file); fclose(file); @@ -2335,13 +2341,16 @@ static char *amsn_logger_read(PurpleLog g_return_val_if_fail(data->path != NULL, g_strdup("")); g_return_val_if_fail(data->length > 0, g_strdup("")); - contents = g_malloc(data->length + 2); - file = g_fopen(data->path, "rb"); g_return_val_if_fail(file != NULL, g_strdup("")); - if (fseek(file, data->offset, SEEK_SET) != 0) + contents = g_malloc(data->length + 2); + + if (fseek(file, data->offset, SEEK_SET) != 0) { + fclose(file); + free(contents); g_return_val_if_reached(g_strdup("")); + } data->length = fread(contents, 1, data->length, file); fclose(file);