From 1118857d92056b587950ea62feec07c4dde63e42 Mon Sep 17 00:00:00 2001 From: Jules Colding Date: Tue, 29 May 2007 09:06:58 +0000 Subject: Fix file descriptor leaks svn path=/trunk/; revision=33598 --- mail/ChangeLog | 12 ++++++++++++ mail/em-utils.c | 11 ++++++++--- mail/importers/evolution-outlook-importer.c | 4 +++- mail/importers/mail-importer.c | 2 +- mail/importers/netscape-importer.c | 3 ++- shell/ChangeLog | 4 ++++ shell/main.c | 2 +- 7 files changed, 31 insertions(+), 7 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index e418cb91b8..820fb843c3 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,15 @@ +2007-05-28 Jules Colding + + * em-utils.c (em_utils_selection_set_urilist): Fix file leak + (em_utils_selection_get_urilist): Fix file leak + + * importers/evolution-outlook-importer.c (import_outlook_import): Fix file leak + + * importers/mail-importer.c (import_mbox_import): Impossible code branch commented + + * importers/netscape-importer.c (netscape_import_filters): Fix file leak + (netscape_init_prefs): Fix file leak + 2007-05-28 Srinivasa Ragavan * evolution-mail.schemas.in.in: Make thread expand default to true. diff --git a/mail/em-utils.c b/mail/em-utils.c index ab958efc12..e4d53ba12b 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -1115,7 +1115,9 @@ em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtr } camel_object_unref(fstream); - } + } else + close(fd); + g_free(uri); } @@ -1154,8 +1156,11 @@ em_utils_selection_get_urilist(GtkSelectionData *data, CamelFolder *folder) if (strcmp(url->protocol, "file") == 0 && (fd = g_open(url->path, O_RDONLY | O_BINARY, 0)) != -1) { stream = camel_stream_fs_new_with_fd(fd); - res = em_utils_read_messages_from_stream(folder, stream); - camel_object_unref(stream); + if (stream) { + res = em_utils_read_messages_from_stream(folder, stream); + camel_object_unref(stream); + } else + close(fd); } camel_url_free(url); } diff --git a/mail/importers/evolution-outlook-importer.c b/mail/importers/evolution-outlook-importer.c index e9f1f64f86..5c63722feb 100644 --- a/mail/importers/evolution-outlook-importer.c +++ b/mail/importers/evolution-outlook-importer.c @@ -316,6 +316,7 @@ import_outlook_import(struct _mail_msg *mm) struct _import_outlook_msg *m = (struct _import_outlook_msg *) mm; struct stat st; CamelFolder *folder; + int fd = -1; if (stat(m->path, &st) == -1) { g_warning("cannot find source file to import '%s': %s", m->path, g_strerror(errno)); @@ -334,7 +335,6 @@ import_outlook_import(struct _mail_msg *mm) CamelOperation *oldcancel = NULL; CamelMessageInfo *info; GByteArray *buffer; - int fd; off_t pos; fd = g_open(m->path, O_RDONLY|O_BINARY, 0); @@ -413,6 +413,8 @@ import_outlook_import(struct _mail_msg *mm) g_byte_array_free(buffer, TRUE); } fail: + if (fd != -1) + close(fd); camel_object_unref(folder); } diff --git a/mail/importers/mail-importer.c b/mail/importers/mail-importer.c index df50c68dfb..8ad5ddef01 100644 --- a/mail/importers/mail-importer.c +++ b/mail/importers/mail-importer.c @@ -223,7 +223,7 @@ import_mbox_import(struct _mail_msg *mm) mp = camel_mime_parser_new(); camel_mime_parser_scan_from(mp, TRUE); - if (camel_mime_parser_init_with_fd(mp, fd) == -1) { + if (camel_mime_parser_init_with_fd(mp, fd) == -1) { /* will never happen - 0 is unconditionally returned */ goto fail2; } diff --git a/mail/importers/netscape-importer.c b/mail/importers/netscape-importer.c index 5bd1377d5c..52f2f7568d 100644 --- a/mail/importers/netscape-importer.c +++ b/mail/importers/netscape-importer.c @@ -1238,7 +1238,7 @@ netscape_import_filters (NsImporter *importer) exit: g_free(user); g_object_unref((fc)); - + fclose (mailrule_handle); } /* Email folder & accounts stuff ----------------------------------------------- */ @@ -1444,6 +1444,7 @@ netscape_init_prefs (void) g_hash_table_insert (user_prefs, key, value); } + fclose (prefs_handle); return; } diff --git a/shell/ChangeLog b/shell/ChangeLog index 6ce4fdc8b1..4f852dff4b 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,7 @@ +2007-05-28 Jules Colding + + * main.c (main): Prevent dup2() and close() on -1 + 2007-05-13 Matthew Barnes * e-shell.c (impl_Shell_handleURI): diff --git a/shell/main.c b/shell/main.c index 0ecdff13b5..9667b862f8 100644 --- a/shell/main.c +++ b/shell/main.c @@ -541,7 +541,7 @@ main (int argc, char **argv) int fd; fd = g_open (evolution_debug_log, O_WRONLY | O_CREAT | O_TRUNC, 0600); - if (fd) { + if (fd != -1) { dup2 (fd, STDOUT_FILENO); dup2 (fd, STDERR_FILENO); close (fd); -- cgit v1.2.3