Re: [evolution-patches] File descriptor leak patch for Evolution



On Mon, 2007-05-28 at 17:04 +0200, Jules Colding wrote:
> Hi,
> 
> The patch below will fix the very few file descriptor leaks that I've
> found in Evolution. I've reviewed the source for leaks from open() and
> opendir(). Only a few was found.
> 
> May I commit?

Please commit.

-Srini.
> 
> Best regards and thanks,
>   jules
> 
> 
> 
> Index: shell/ChangeLog
> ===================================================================
> --- shell/ChangeLog	(revision 33593)
> +++ shell/ChangeLog	(working copy)
> @@ -1,3 +1,7 @@
> +2007-05-28  Jules Colding  <colding omesc com>
> +
> +	* main.c (main): Prevent dup2() and close() on -1
> +
>  2007-05-13  Matthew Barnes  <mbarnes redhat com>
>  
>  	* e-shell.c (impl_Shell_handleURI):
> Index: shell/main.c
> ===================================================================
> --- shell/main.c	(revision 33593)
> +++ shell/main.c	(working copy)
> @@ -541,7 +541,7 @@
>  		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);
> Index: mail/ChangeLog
> ===================================================================
> --- mail/ChangeLog	(revision 33593)
> +++ mail/ChangeLog	(working copy)
> @@ -1,3 +1,17 @@
> +2007-05-28  Jules Colding  <colding omesc com>
> +
> +	* 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
> +
> +2007-05-25  Jules Colding  <colding omesc com>
> +
> +	* 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-25  Matthew Barnes  <mbarnes redhat com>
>  
>  	* mail-send-recv.c:
> Index: mail/em-utils.c
> ===================================================================
> --- mail/em-utils.c	(revision 33593)
> +++ mail/em-utils.c	(working copy)
> @@ -1115,7 +1115,9 @@
>  		}
>  
>  		camel_object_unref(fstream);
> -	}
> +	} else
> +		close(fd);
> +
>  	g_free(uri);
>  }
>  
> @@ -1154,8 +1156,11 @@
>  		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);
>  	}
> Index: mail/importers/mail-importer.c
> ===================================================================
> --- mail/importers/mail-importer.c	(revision 33593)
> +++ mail/importers/mail-importer.c	(working copy)
> @@ -223,7 +223,7 @@
>  
>  		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;
>  		}
>  
> Index: mail/importers/netscape-importer.c
> ===================================================================
> --- mail/importers/netscape-importer.c	(revision 33593)
> +++ mail/importers/netscape-importer.c	(working copy)
> @@ -1238,7 +1238,7 @@
>   exit:
>  	g_free(user);
>  	g_object_unref((fc));
> -
> +	fclose (mailrule_handle);
>  }
>  
>  /* Email folder & accounts stuff ----------------------------------------------- */
> @@ -1444,6 +1444,7 @@
>  		g_hash_table_insert (user_prefs, key, value);
>  	}
>  
> +	fclose (prefs_handle);
>  	return;
>  }
>  
> Index: mail/importers/evolution-outlook-importer.c
> ===================================================================
> --- mail/importers/evolution-outlook-importer.c	(revision 33593)
> +++ mail/importers/evolution-outlook-importer.c	(working copy)
> @@ -316,6 +316,7 @@
>  	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 @@
>  		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 @@
>  		g_byte_array_free(buffer, TRUE);
>  	}
>  fail:
> +	if (fd != -1)
> +		close(fd);
>  	camel_object_unref(folder);
>  }
>  
> 
> 
> _______________________________________________
> Evolution-patches mailing list
> Evolution-patches gnome org
> http://mail.gnome.org/mailman/listinfo/evolution-patches




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]