summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebrn@axis.com>2014-06-24 16:32:22 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-06-24 19:05:34 +0200
commit96c78695f96584f06c0f0f453fc6cf5f19c1e4ca (patch)
tree27f398a5a098f2138816d7fc14298a75cadd6c87
parent42b3d6ec8ae1c264227adf820520a3e26d098ab0 (diff)
downloadgstreamer-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
-rw-r--r--ext/curl/gstcurlftpsink.c26
-rw-r--r--ext/curl/gstcurlsftpsink.c7
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;
}