[vlc-commits] demux: adaptive: sanitize user-agent (fix #20813)

Francois Cartegnie git at videolan.org
Tue Apr 30 15:32:38 CEST 2019


vlc/vlc-3.0 | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue Apr 23 15:50:05 2019 +0200| [7a0a9bd6298d2d0754ad89f9af23e4b1ac6ce87d] | committer: Francois Cartegnie

demux: adaptive: sanitize user-agent (fix #20813)

pretty useless since we can no longer change it...

(cherry picked from commit aa98792614777b86b052c2ec03deac57ca3da1e9)

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=7a0a9bd6298d2d0754ad89f9af23e4b1ac6ce87d
---

 modules/demux/adaptive/http/HTTPConnection.cpp | 10 +++++++---
 modules/demux/adaptive/http/HTTPConnection.hpp |  2 +-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/modules/demux/adaptive/http/HTTPConnection.cpp b/modules/demux/adaptive/http/HTTPConnection.cpp
index 451e81d2bd..5fc0144e14 100644
--- a/modules/demux/adaptive/http/HTTPConnection.cpp
+++ b/modules/demux/adaptive/http/HTTPConnection.cpp
@@ -70,7 +70,12 @@ HTTPConnection::HTTPConnection(vlc_object_t *p_object_, AuthStorage *auth,
     : AbstractConnection( p_object_ )
 {
     transport = socket_;
-    psz_useragent = var_InheritString(p_object_, "http-user-agent");
+    char *psz_useragent = var_InheritString(p_object_, "http-user-agent");
+    useragent = psz_useragent ? std::string(psz_useragent) : std::string("");
+    free(psz_useragent);
+    for(std::string::iterator it = useragent.begin(); it != useragent.end(); ++it)
+        if(!std::isprint(*it))
+            *it = ' ';
     queryOk = false;
     retries = 0;
     authStorage = auth;
@@ -83,7 +88,6 @@ HTTPConnection::HTTPConnection(vlc_object_t *p_object_, AuthStorage *auth,
 
 HTTPConnection::~HTTPConnection()
 {
-    free(psz_useragent);
     delete transport;
 }
 
@@ -433,7 +437,7 @@ std::string HTTPConnection::buildRequestHeader(const std::string &path) const
             req << "Cookie: " << cookie << "\r\n";
     }
     req << "Cache-Control: no-cache" << "\r\n" <<
-           "User-Agent: " << std::string(psz_useragent) << "\r\n";
+           "User-Agent: " << useragent << "\r\n";
     req << extraRequestHeaders();
     return req.str();
 }
diff --git a/modules/demux/adaptive/http/HTTPConnection.hpp b/modules/demux/adaptive/http/HTTPConnection.hpp
index c95ce15798..343336f0db 100644
--- a/modules/demux/adaptive/http/HTTPConnection.hpp
+++ b/modules/demux/adaptive/http/HTTPConnection.hpp
@@ -93,7 +93,7 @@ namespace adaptive
                 ssize_t         readChunk   (void *p_buffer, size_t len);
                 int parseReply();
                 std::string readLine();
-                char * psz_useragent;
+                std::string useragent;
 
                 AuthStorage        *authStorage;
                 ConnectionParams    locationparams;



More information about the vlc-commits mailing list