Fix HTTP request output parsing: Don't read past the curl buffer end
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 18 Oct 2010 09:31:34 +0000 (11:31 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 18 Oct 2010 09:31:34 +0000 (11:31 +0200)
src/httphelper.cpp
src/httphelper.hpp
src/ip_addr_helper.cpp
src/ip_addr_helper.hpp

index 997599a..eb35fd9 100644 (file)
@@ -293,9 +293,8 @@ CURLcode HTTPHelper::set_curl_auth(const string& username, const string& passwor
  * @param outBuffer Pointer to output stream.
  * @return The size received.
  */
-size_t HTTPHelper::http_receive( const char *inBuffer, size_t size, size_t nmemb, string *outBuffer )
+size_t HTTPHelper::http_receive( void *inBuffer, size_t size, size_t nmemb, string *outBuffer )
 {
-    outBuffer->append(inBuffer);
+    outBuffer->append(static_cast<char *>(inBuffer), size*nmemb);
     return (size*nmemb);
-}
-
+} //lint !e818
index abc984a..8f29e9f 100644 (file)
@@ -58,7 +58,7 @@ public:
     void re_initialize();
 
     // libcurl is a C library, so we have to make the callback member function static :-(
-    static size_t http_receive(const char *inBuffer, size_t size, size_t nmemb, std::string *outBuffer);
+    static size_t http_receive(void *inBuffer, size_t size, size_t nmemb, std::string *outBuffer);
 };
 
 #endif
index 3293ee1..16359dd 100644 (file)
@@ -613,11 +613,11 @@ CURL * IPAddrHelper::init_curl(string& curl_writedata_buff,char* curl_err_buff)
  * @param outBuffer Pointer to output stream.
  * @return The size received.
  */
-size_t IPAddrHelper::http_receive( const char *inBuffer, size_t size, size_t nmemb, string *outBuffer )
+size_t IPAddrHelper::http_receive( void *inBuffer, size_t size, size_t nmemb, string *outBuffer )
 {
-    outBuffer->append(inBuffer);
+    outBuffer->append(static_cast<char *>(inBuffer), size*nmemb);
     return (size*nmemb);
-}
+} //lint !e818
 
 
 /**
index 8615148..c150f39 100644 (file)
@@ -66,7 +66,7 @@ public:
     std::string get_local_wan_nic_ip() const;
 
     // libcurl is a C library, so we have to make the callback member function static :-(
-    static size_t http_receive(const char *inBuffer, size_t size, size_t nmemb, std::string *outBuffer);
+    static size_t http_receive(void *inBuffer, size_t size, size_t nmemb, std::string *outBuffer);
 
     time_t get_last_webcheck() const;
 };