# HG changeset patch # User Yoshiki Yazawa # Date 1184044875 -32400 # Node ID 01efa0e5b554bd63e25c78b7983ca6719b08a71a # Parent 7a081f2998d0412ba187eed79095bdeb33e118c9 file->handle should be cleared on close, otherwise it can lead to double free. diff -r 7a081f2998d0 -r 01efa0e5b554 src/curl/curl.c --- a/src/curl/curl.c Mon Jul 09 08:09:21 2007 -0500 +++ b/src/curl/curl.c Tue Jul 10 14:21:15 2007 +0900 @@ -722,6 +722,7 @@ g_free(handle->url); g_free(handle); + file->handle = NULL; } return ret; } diff -r 7a081f2998d0 -r 01efa0e5b554 src/lastfm/lastfm.c --- a/src/lastfm/lastfm.c Mon Jul 09 08:09:21 2007 -0500 +++ b/src/lastfm/lastfm.c Tue Jul 10 14:21:15 2007 +0900 @@ -380,12 +380,14 @@ if (file == NULL) return -1; - LastFM *handle = file->handle; - ret = vfs_fclose(handle->proxy_fd); - if (!ret) + if (file->handle) { + LastFM *handle = file->handle; + ret = vfs_fclose(handle->proxy_fd); + if (!ret) handle->proxy_fd = NULL; - g_free(handle); - handle=NULL; + g_free(handle); + file->handle = NULL; + } return ret; } diff -r 7a081f2998d0 -r 01efa0e5b554 src/mms/mms.c --- a/src/mms/mms.c Mon Jul 09 08:09:21 2007 -0500 +++ b/src/mms/mms.c Tue Jul 10 14:21:15 2007 +0900 @@ -86,6 +86,7 @@ mms_close(handle->mms); g_free(handle); + file->handle = NULL; } return ret; diff -r 7a081f2998d0 -r 01efa0e5b554 src/stdio/stdio.c --- a/src/stdio/stdio.c Mon Jul 09 08:09:21 2007 -0500 +++ b/src/stdio/stdio.c Tue Jul 10 14:21:15 2007 +0900 @@ -111,6 +111,7 @@ if (fclose(handle) != 0) ret = -1; + file->handle = NULL; } return ret;