diff options
author | Sebastian Rasmussen <sebrn@axis.com> | 2014-06-24 16:32:22 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-06-24 19:05:34 +0200 |
commit | 96c78695f96584f06c0f0f453fc6cf5f19c1e4ca (patch) | |
tree | 27f398a5a098f2138816d7fc14298a75cadd6c87 /ext | |
parent | 42b3d6ec8ae1c264227adf820520a3e26d098ab0 (diff) | |
download | gstreamer-plugins-bad-96c78695f96584f06c0f0f453fc6cf5f19c1e4ca.tar.gz |
curls?ftpsink: Fix memory leaks due to new error handling
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732174
Diffstat (limited to 'ext')
-rw-r--r-- | ext/curl/gstcurlftpsink.c | 26 | ||||
-rw-r--r-- | ext/curl/gstcurlsftpsink.c | 7 |
2 files changed, 14 insertions, 19 deletions
diff --git a/ext/curl/gstcurlftpsink.c b/ext/curl/gstcurlftpsink.c index 64ad0bc88..995fe3830 100644 --- a/ext/curl/gstcurlftpsink.c +++ b/ext/curl/gstcurlftpsink.c @@ -185,7 +185,6 @@ set_ftp_dynamic_options_unlocked (GstCurlBaseSink * basesink) gchar *rename_to = NULL; gchar *uploadfile_as = NULL; gchar *last_slash = NULL; - gchar *dir_name = NULL; gchar *tmpfile_name = NULL; if (sink->headerlist != NULL) { @@ -204,57 +203,54 @@ set_ftp_dynamic_options_unlocked (GstCurlBaseSink * basesink) last_slash = strrchr (basesink->file_name, '/'); if (last_slash != NULL) { - dir_name = + gchar *dir_name = g_strndup (basesink->file_name, last_slash - basesink->file_name); rename_to = g_strdup_printf ("%s%s", RENAME_TO, last_slash + 1); uploadfile_as = g_strdup_printf ("%s/%s", dir_name, tmpfile_name); + g_free (dir_name); } else { rename_to = g_strdup_printf ("%s%s", RENAME_TO, basesink->file_name); uploadfile_as = g_strdup_printf ("%s", tmpfile_name); } + g_free (tmpfile_name); tmp = g_strdup_printf ("%s%s", basesink->url, uploadfile_as); + g_free (uploadfile_as); + + sink->headerlist = curl_slist_append (sink->headerlist, rename_from); + sink->headerlist = curl_slist_append (sink->headerlist, rename_to); + g_free (rename_from); + g_free (rename_to); res = curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp); + g_free (tmp); if (res != CURLE_OK) { - g_free (tmp); basesink->error = g_strdup_printf ("failed to set URL: %s", curl_easy_strerror (res)); return FALSE; } - sink->headerlist = curl_slist_append (sink->headerlist, rename_from); - sink->headerlist = curl_slist_append (sink->headerlist, rename_to); - res = curl_easy_setopt (basesink->curl, CURLOPT_POSTQUOTE, sink->headerlist); if (res != CURLE_OK) { - g_free (tmp); basesink->error = g_strdup_printf ("failed to set post quote: %s", curl_easy_strerror (res)); return FALSE; } - g_free (rename_from); - g_free (rename_to); - g_free (uploadfile_as); - g_free (dir_name); - g_free (tmpfile_name); if (last_slash != NULL) { *last_slash = '\0'; } } else { tmp = g_strdup_printf ("%s%s", basesink->url, basesink->file_name); res = curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp); + g_free (tmp); if (res != CURLE_OK) { - g_free (tmp); basesink->error = g_strdup_printf ("failed to set URL: %s", curl_easy_strerror (res)); return FALSE; } } - g_free (tmp); - return TRUE; } diff --git a/ext/curl/gstcurlsftpsink.c b/ext/curl/gstcurlsftpsink.c index 831c11000..961ad438a 100644 --- a/ext/curl/gstcurlsftpsink.c +++ b/ext/curl/gstcurlsftpsink.c @@ -140,15 +140,14 @@ set_sftp_dynamic_options_unlocked (GstCurlBaseSink * basesink) gchar *tmp = g_strdup_printf ("%s%s", basesink->url, basesink->file_name); CURLcode curl_err = CURLE_OK; - if ((curl_err = - curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp)) != CURLE_OK) { + curl_err = curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp); + g_free (tmp); + if (curl_err != CURLE_OK) { basesink->error = g_strdup_printf ("failed to set URL: %s", curl_easy_strerror (curl_err)); return FALSE; } - g_free (tmp); - return TRUE; } |