| Index: chrome/common/win_util.cc
|
| ===================================================================
|
| --- chrome/common/win_util.cc (revision 1800)
|
| +++ chrome/common/win_util.cc (working copy)
|
| @@ -395,12 +395,16 @@
|
|
|
| // Initially populated by the file component of 'suggested_name', this buffer
|
| // will be written into by Windows when the user is done with the dialog box.
|
| - wchar_t file_name[MAX_PATH+1];
|
| std::wstring file_part = file_util::GetFilenameFromPath(suggested_name);
|
| - memcpy(file_name,
|
| - file_part.c_str(),
|
| - (file_part.length()+1) * sizeof(wchar_t));
|
|
|
| + // This will clamp the number of characters copied from the supplied path
|
| + // to the value of MAX_PATH.
|
| + size_t name_size = std::min(file_part.length() + 1,
|
| + static_cast<size_t>(MAX_PATH));
|
| + wchar_t file_name[MAX_PATH];
|
| + memcpy(file_name, file_part.c_str(), name_size * sizeof(wchar_t));
|
| + file_name[MAX_PATH - 1] = '\0';
|
| +
|
| OPENFILENAME save_as;
|
| // We must do this otherwise the ofn's FlagsEx may be initialized to random
|
| // junk in release builds which can cause the Places Bar not to show up!
|
|
|