 Chromium Code Reviews
 Chromium Code Reviews Issue 560283003:
  Wrong filename on file upload  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 560283003:
  Wrong filename on file upload  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| OLD | NEW | 
|---|---|
| 1 /* Based on nsURLParsers.cc from Mozilla | 1 /* Based on nsURLParsers.cc from Mozilla | 
| 2 * ------------------------------------- | 2 * ------------------------------------- | 
| 3 * The contents of this file are subject to the Mozilla Public License Version | 3 * The contents of this file are subject to the Mozilla Public License Version | 
| 4 * 1.1 (the "License"); you may not use this file except in compliance with | 4 * 1.1 (the "License"); you may not use this file except in compliance with | 
| 5 * the License. You may obtain a copy of the License at | 5 * the License. You may obtain a copy of the License at | 
| 6 * http://www.mozilla.org/MPL/ | 6 * http://www.mozilla.org/MPL/ | 
| 7 * | 7 * | 
| 8 * Software distributed under the License is distributed on an "AS IS" basis, | 8 * Software distributed under the License is distributed on an "AS IS" basis, | 
| 9 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | 9 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | 
| 10 * for the specific language governing rights and limitations under the | 10 * for the specific language governing rights and limitations under the | 
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 619 if (!path.is_nonempty()) { | 619 if (!path.is_nonempty()) { | 
| 620 file_name->reset(); | 620 file_name->reset(); | 
| 621 return; | 621 return; | 
| 622 } | 622 } | 
| 623 | 623 | 
| 624 // Search backwards for a parameter, which is a normally unused field in a | 624 // Search backwards for a parameter, which is a normally unused field in a | 
| 625 // URL delimited by a semicolon. We parse the parameter as part of the | 625 // URL delimited by a semicolon. We parse the parameter as part of the | 
| 626 // path, but here, we don't want to count it. The last semicolon is the | 626 // path, but here, we don't want to count it. The last semicolon is the | 
| 627 // parameter. The path should start with a slash, so we don't need to check | 627 // parameter. The path should start with a slash, so we don't need to check | 
| 628 // the first one. | 628 // the first one. | 
| 629 bool is_file_end_fixed = false; | |
| 629 int file_end = path.end(); | 630 int file_end = path.end(); | 
| 630 for (int i = path.end() - 1; i > path.begin; i--) { | 631 for (int i = path.end() - 1; i >= path.begin; i--) { | 
| 631 if (spec[i] == ';') { | 632 if (!is_file_end_fixed && spec[i] == ';') { | 
| 
brettw
2014/09/16 22:37:10
It seems that this behavior takes everything betwe
 
arun87.kumar
2014/09/17 11:39:12
i too felt that incase of "foo/bar;baz;lala", the
 | |
| 632 file_end = i; | 633 file_end = i; | 
| 633 break; | 634 is_file_end_fixed = true; | 
| 634 } | 635 }else if (IsURLSlash(spec[i])) { | 
| 
brettw
2014/09/16 22:37:10
Space before "else"
 
arun87.kumar
2014/09/17 11:39:12
Done.
 | |
| 635 } | 636 // search backwards from the filename end to the previous slash | 
| 
brettw
2014/09/16 22:37:09
This comment should be updated (this code no longe
 
arun87.kumar
2014/09/17 11:39:12
Done.
 | |
| 636 | 637 // to find the beginning of the filename. | 
| 637 // Now search backwards from the filename end to the previous slash | |
| 638 // to find the beginning of the filename. | |
| 639 for (int i = file_end - 1; i >= path.begin; i--) { | |
| 640 if (IsURLSlash(spec[i])) { | |
| 641 // File name is everything following this character to the end | 638 // File name is everything following this character to the end | 
| 642 *file_name = MakeRange(i + 1, file_end); | 639 *file_name = MakeRange(i + 1, file_end); | 
| 643 return; | 640 return; | 
| 644 } | 641 } | 
| 645 } | 642 } | 
| 646 | 643 | 
| 
brettw
2014/09/16 22:37:09
Watch out for extra spaces.
 
arun87.kumar
2014/09/17 11:39:12
Done.
 | |
| 647 // No slash found, this means the input was degenerate (generally paths | 644 // No slash found, this means the input was degenerate (generally paths | 
| 648 // will start with a slash). Let's call everything the file name. | 645 // will start with a slash). Let's call everything the file name. | 
| 649 *file_name = MakeRange(path.begin, file_end); | 646 *file_name = MakeRange(path.begin, file_end); | 
| 650 return; | 647 return; | 
| 651 } | 648 } | 
| 652 | 649 | 
| 653 template<typename CHAR> | 650 template<typename CHAR> | 
| 654 bool DoExtractQueryKeyValue(const CHAR* spec, | 651 bool DoExtractQueryKeyValue(const CHAR* spec, | 
| 655 Component* query, | 652 Component* query, | 
| 656 Component* key, | 653 Component* key, | 
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 935 } | 932 } | 
| 936 | 933 | 
| 937 void ParseAfterScheme(const base::char16* spec, | 934 void ParseAfterScheme(const base::char16* spec, | 
| 938 int spec_len, | 935 int spec_len, | 
| 939 int after_scheme, | 936 int after_scheme, | 
| 940 Parsed* parsed) { | 937 Parsed* parsed) { | 
| 941 DoParseAfterScheme(spec, spec_len, after_scheme, parsed); | 938 DoParseAfterScheme(spec, spec_len, after_scheme, parsed); | 
| 942 } | 939 } | 
| 943 | 940 | 
| 944 } // namespace url | 941 } // namespace url | 
| OLD | NEW |