summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-02-08 17:59:11 +0300
committerAndrei Karas <akaras@inbox.ru>2013-02-10 03:07:43 +0300
commit328977cfec1c5f370043d27b64ded201da95a380 (patch)
treef147eada01835d7a9c16b9168cfc7d672aab4046
parent65a51323181bdf637476d188914067d790dc55fd (diff)
downloadmv-328977cfec1c5f370043d27b64ded201da95a380.tar.gz
mv-328977cfec1c5f370043d27b64ded201da95a380.tar.bz2
mv-328977cfec1c5f370043d27b64ded201da95a380.tar.xz
mv-328977cfec1c5f370043d27b64ded201da95a380.zip
Block any protocols in curl except HTTP and HTTPS.
-rw-r--r--src/gui/whoisonline.cpp1
-rw-r--r--src/net/download.cpp9
-rw-r--r--src/net/download.h2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/whoisonline.cpp b/src/gui/whoisonline.cpp
index ed3d038a7..df2e5a47e 100644
--- a/src/gui/whoisonline.cpp
+++ b/src/gui/whoisonline.cpp
@@ -516,6 +516,7 @@ int WhoIsOnline::downloadThread(void *ptr)
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 7);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30);
Net::Download::addProxy(curl);
+ Net::Download::secureCurl(curl);
struct curl_slist *pHeaders = nullptr;
// Make sure the resources2.txt and news.txt aren't cached,
diff --git a/src/net/download.cpp b/src/net/download.cpp
index 7fb799fa0..838038f7c 100644
--- a/src/net/download.cpp
+++ b/src/net/download.cpp
@@ -253,6 +253,7 @@ int Download::downloadThread(void *ptr)
curl_easy_setopt(d->mCurl, CURLOPT_CONNECTTIMEOUT, 30);
curl_easy_setopt(d->mCurl, CURLOPT_TIMEOUT, 1800);
addProxy(d->mCurl);
+ secureCurl(d->mCurl);
if ((res = curl_easy_perform(d->mCurl)) != 0
&& !d->mOptions.cancel)
@@ -410,4 +411,12 @@ void Download::addProxy(CURL *curl)
}
}
+void Download::secureCurl(CURL *curl)
+{
+ curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
+ CURLPROTO_HTTP | CURLPROTO_HTTPS);
+ curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
+ CURLPROTO_HTTP | CURLPROTO_HTTPS);
+}
+
} // namespace Net
diff --git a/src/net/download.h b/src/net/download.h
index 77f1d1ccc..f9f842588 100644
--- a/src/net/download.h
+++ b/src/net/download.h
@@ -97,6 +97,8 @@ class Download final
static void addProxy(CURL *curl);
+ static void secureCurl(CURL *curl);
+
private:
static int downloadThread(void *ptr);
static int downloadProgress(void *clientp, double dltotal,