Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: chrome/browser/views/shell_dialogs.cc

Issue 476: Clamp open file name size. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/common/win_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/shell_dialogs.h" 5 #include "chrome/browser/shell_dialogs.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <Commdlg.h> 8 #include <Commdlg.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 10
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 bool SelectFileDialogImpl::RunOpenFileDialog(const std::wstring& title, 333 bool SelectFileDialogImpl::RunOpenFileDialog(const std::wstring& title,
334 HWND owner, 334 HWND owner,
335 std::wstring* path) { 335 std::wstring* path) {
336 OPENFILENAME ofn; 336 OPENFILENAME ofn;
337 // We must do this otherwise the ofn's FlagsEx may be initialized to random 337 // We must do this otherwise the ofn's FlagsEx may be initialized to random
338 // junk in release builds which can cause the Places Bar not to show up! 338 // junk in release builds which can cause the Places Bar not to show up!
339 ZeroMemory(&ofn, sizeof(ofn)); 339 ZeroMemory(&ofn, sizeof(ofn));
340 ofn.lStructSize = sizeof(ofn); 340 ofn.lStructSize = sizeof(ofn);
341 ofn.hwndOwner = owner; 341 ofn.hwndOwner = owner;
342 342
343 // This will clamp the number of characters copied from the supplied path
344 // to the value of MAX_PATH.
345 size_t name_size = std::min(path->length() + 1,
346 static_cast<size_t>(MAX_PATH));
343 wchar_t filename[MAX_PATH]; 347 wchar_t filename[MAX_PATH];
344 memcpy(filename, path->c_str(), (path->length()+1) * sizeof(wchar_t)); 348 memcpy(filename, path->c_str(), name_size * sizeof(wchar_t));
349 filename[MAX_PATH - 1] = '\0';
345 350
346 ofn.lpstrFile = filename; 351 ofn.lpstrFile = filename;
347 ofn.nMaxFile = MAX_PATH; 352 ofn.nMaxFile = MAX_PATH;
348 ofn.Flags = OFN_FILEMUSTEXIST; 353 ofn.Flags = OFN_FILEMUSTEXIST;
349 354
350 // TODO(beng): (http://b/issue?id=1126563) edit the filter options in the 355 // TODO(beng): (http://b/issue?id=1126563) edit the filter options in the
351 // dropdown list. 356 // dropdown list.
352 bool success = !!GetOpenFileName(&ofn); 357 bool success = !!GetOpenFileName(&ofn);
353 DisableOwner(owner); 358 DisableOwner(owner);
354 if (success) 359 if (success)
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 if (listener_) 523 if (listener_)
519 listener_->FontSelectionCanceled(params); 524 listener_->FontSelectionCanceled(params);
520 EndRun(run_state); 525 EndRun(run_state);
521 } 526 }
522 527
523 // static 528 // static
524 SelectFontDialog* SelectFontDialog::Create(Listener* listener) { 529 SelectFontDialog* SelectFontDialog::Create(Listener* listener) {
525 return new SelectFontDialogImpl(listener); 530 return new SelectFontDialogImpl(listener);
526 } 531 }
527 532
OLDNEW
« no previous file with comments | « no previous file | chrome/common/win_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698