[vlc-commits] [Git][videolan/vlc][master] breakpad: remove MAX_PATH limits

Steve Lhomme (@robUx4) gitlab at videolan.org
Thu Nov 28 09:30:44 UTC 2024



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
05e7dae2 by Steve Lhomme at 2024-11-28T08:57:11+00:00
breakpad: remove MAX_PATH limits

It's unlikely the user path is that large, but just in case we are ready.

This fixes an issue where the result of _snwprintf() is not checked.
The wstringstream will only fail if there's no memory. At this point
further calls using std::map and breakpad will also fail.

- - - - -


1 changed file:

- bin/breakpad.cpp


Changes:

=====================================
bin/breakpad.cpp
=====================================
@@ -30,6 +30,7 @@
 #include <memory>
 #include <map>
 #include <string>
+#include <sstream>
 
 using google_breakpad::ExceptionHandler;
 
@@ -47,10 +48,10 @@ extern "C"
 
 void CheckCrashDump( const wchar_t* path )
 {
-    wchar_t pattern[MAX_PATH];
+    std::wstringstream pattern;
     WIN32_FIND_DATAW data;
-    _snwprintf( pattern, MAX_PATH, L"%s/*.dmp", path );
-    HANDLE h = FindFirstFileW( pattern, &data );
+    pattern << path << L"/*.dmp";
+    HANDLE h = FindFirstFileW( pattern.str().c_str(), &data );
     if (h == INVALID_HANDLE_VALUE)
         return;
     int answer = MessageBoxW( NULL, L"Ooops: VLC media player just crashed.\n" \
@@ -61,17 +62,17 @@ void CheckCrashDump( const wchar_t* path )
     params[L"ver"] = WIDEN(PACKAGE_VERSION);
     do
     {
-        wchar_t fullPath[MAX_PATH];
-        _snwprintf( fullPath, MAX_PATH, L"%s/%s", path, data.cFileName );
+        std::wstringstream fullPath;
+        fullPath << path << L'/' << data.cFileName;
         if( answer == IDYES )
         {
             std::map<std::wstring, std::wstring> files;
-            files[L"upload_file_minidump"] = fullPath;
+            files[L"upload_file_minidump"] = fullPath.str();
             google_breakpad::HTTPUpload::SendRequest(
                             WIDEN( BREAKPAD_URL "/reports" ), params, files,
                             NULL, NULL, NULL );
         }
-        DeleteFileW( fullPath );
+        DeleteFileW( fullPath.str().c_str() );
     } while ( FindNextFileW( h, &data ) );
     FindClose(h);
 }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/05e7dae2fcd2b4b6483fc333b2f5257e84407e34

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/05e7dae2fcd2b4b6483fc333b2f5257e84407e34
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list