Skip to content

Check string size before Win32 MultiByte <-> WideChar conversions#99729

Merged
cbracken merged 1 commit intoflutter:masterfrom
cbracken:win-string-check
Mar 8, 2022
Merged

Check string size before Win32 MultiByte <-> WideChar conversions#99729
cbracken merged 1 commit intoflutter:masterfrom
cbracken:win-string-check

Conversation

@cbracken
Copy link
Member

@cbracken cbracken commented Mar 8, 2022

This PR adds an additional check to ensure the target length of a string is within the supported maximum string length prior to calling WideCharToMultiByte/MultiByteToWideChar in the Windows runner template.

This is to prevent resize() from failing if called with a count > std::string::max_size().

According to Win32 API docs (WideCharToMultiByte, MultiByteToWideChar) it's the caller responsibility to make sure the buffers are correctly allocated.

This patch was originally proposed by @tgucio in #94608.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@flutter-dashboard flutter-dashboard bot added d: api docs Issues with https://api.flutter.dev/ d: examples Sample code and demos documentation c: contributor-productivity Team-specific productivity, code health, technical debt. tool Affects the "flutter" command-line tool. See also t: labels. labels Mar 8, 2022
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@cbracken
Copy link
Member Author

cbracken commented Mar 8, 2022

Unfortunately while attempting to rebase #94608 and re-trigger tests, the update to the @tgucio's original repo failed due to a permissioning error. You can see original review comments on that PR. I've re-opened the patch here with a cherry-pick of the original commit (i.e. the commit retains @tgucio as author).

@cbracken cbracken requested a review from stuartmorgan-g March 8, 2022 02:13
@cbracken cbracken merged commit b5d3c43 into flutter:master Mar 8, 2022
@cbracken cbracken deleted the win-string-check branch March 8, 2022 03:57
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 8, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
ditman added a commit to ditman/flutter-packages that referenced this pull request Mar 10, 2022
Roll Flutter from 38dbbb1 to 0dfb656 (135 revisions)

flutter/flutter@38dbbb1...0dfb656

2022-03-10 [email protected] Roll Engine from bf2bf3a3fd2b to 6b1a24b1a108 (10 revisions) (flutter/flutter#99917)
2022-03-10 [email protected] Roll Plugins from eb6ad34 to 20e231b (8 revisions) (flutter/flutter#99913)
2022-03-10 [email protected] Roll Engine from 2c1816b39127 to bf2bf3a3fd2b (3 revisions) (flutter/flutter#99887)
2022-03-10 [email protected] Migrate NavigationRail to Material 3. (flutter/flutter#99171)
2022-03-10 [email protected] Remove expired ThemeData deprecations (flutter/flutter#98578)
2022-03-09 [email protected] Roll Engine from 09a11d137953 to 2c1816b39127 (3 revisions) (flutter/flutter#99878)
2022-03-09 [email protected] [ci.yaml] Remove unused benchmark property (flutter/flutter#99843)
2022-03-09 [email protected] [Material] Create an InkSparkle splash effect that matches the Material 3 ripple effect (flutter/flutter#99731)
2022-03-09 [email protected] Remove deprecated RenderEditable.onSelectionChanged (flutter/flutter#98582)
2022-03-09 [email protected] Marks Mac_ios post_backdrop_filter_perf_ios__timeline_summary to be flaky (flutter/flutter#99856)
2022-03-09 [email protected] Roll Engine from 6d7bcc9e577c to 09a11d137953 (3 revisions) (flutter/flutter#99870)
2022-03-09 [email protected] [tool] Add CADisableMinimumFrameDurationOnPhone to iOS templates (flutter/flutter#94509)
2022-03-09 [email protected] First pass at using platform abstraction for plugins (flutter/flutter#92672)
2022-03-09 [email protected] Fix `ColorScheme.shadow` to default to black even for dark themes. (flutter/flutter#99722)
2022-03-09 [email protected] Roll Engine from a0963f14b67d to 6d7bcc9e577c (3 revisions) (flutter/flutter#99847)
2022-03-09 [email protected] Updated tokens to v0.90. (flutter/flutter#99782)
2022-03-09 [email protected] Marks Mac_ios backdrop_filter_perf_ios__timeline_summary to be unflaky (flutter/flutter#99836)
2022-03-09 [email protected] updateEditingValueWithDeltas snippet docs fix (flutter/flutter#99570)
2022-03-09 [email protected] Roll Engine from 9362061fbb79 to a0963f14b67d (1 revision) (flutter/flutter#99838)
2022-03-09 [email protected] Roll Plugins from b906ea5 to eb6ad34 (9 revisions) (flutter/flutter#99828)
2022-03-09 [email protected] Update visibility of methods for internal use (flutter/flutter#98124)
2022-03-09 [email protected] Roll Engine from 621c88dc2d13 to 9362061fbb79 (6 revisions) (flutter/flutter#99809)
2022-03-09 [email protected] Roll Engine from 5c760759feca to 621c88dc2d13 (2 revisions) (flutter/flutter#99792)
2022-03-09 [email protected] Pass 'assume-initialize-from-dill-up-to-date' flag to the frontend server (flutter/flutter#99791)
2022-03-09 [email protected] remove unnecessary null check (flutter/flutter#99507)
2022-03-09 [email protected] Avoid calling `performLayout` when only the relayout boundary is different (flutter/flutter#99056)
2022-03-09 [email protected] Revert "Add the refresh rate fields to perf_test (#99710)" (flutter/flutter#99801)
2022-03-09 [email protected] Re-land removal of maxLengthEnforced deprecation (flutter/flutter#99787)
2022-03-09 [email protected] Add the refresh rate fields to perf_test (flutter/flutter#99710)
2022-03-09 [email protected] Remove tool crash git.io link shortener (flutter/flutter#99574)
2022-03-09 [email protected] 95533 min sdk error msgs enhancements (flutter/flutter#99550)
2022-03-08 [email protected] Remove deprecated OutlineButton (flutter/flutter#98546)
2022-03-08 [email protected] [flutter_tools] Fix Typo in tool error message (flutter/flutter#97793)
2022-03-08 [email protected] Handle hidden dot files in iOS framework bundles (flutter/flutter#99771)
2022-03-08 [email protected] Updated tokens to v0.88. (flutter/flutter#99568)
2022-03-08 [email protected] Revert "Remove deprecated CupertinoTextField, TextField, TextFormField maxLengthEnforced" (flutter/flutter#99768)
2022-03-08 [email protected] Add Foldable support for modal routes (flutter/flutter#92909)
2022-03-08 [email protected] Roll Plugins from 675f91b to b906ea5 (4 revisions) (flutter/flutter#99765)
2022-03-08 [email protected] Roll Engine from 0fed94d050b1 to 5c760759feca (1 revision) (flutter/flutter#99751)
2022-03-08 [email protected] Fix: Date picker interactive sample not loading  (flutter/flutter#99401)
2022-03-08 [email protected] Check string size before Win32 MultiByte <-> WideChar conversions (flutter/flutter#99729)
2022-03-08 [email protected] Roll Engine from 9c3f73864029 to 0fed94d050b1 (6 revisions) (flutter/flutter#99728)
2022-03-08 [email protected] Adds a Listview tile select example (flutter/flutter#99165)
2022-03-08 [email protected] Remove deprecated CupertinoTextField, TextField, TextFormField maxLengthEnforced (flutter/flutter#98539)
2022-03-08 [email protected] Roll Engine from 9e1594bd741f to 9c3f73864029 (2 revisions) (flutter/flutter#99721)
2022-03-08 49699333+dependabot[bot]@users.noreply.github.com Bump debian from bullseye-20220125-slim to bullseye-20220228-slim in /dev/ci/docker_linux (flutter/flutter#99708)
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c: contributor-productivity Team-specific productivity, code health, technical debt. d: api docs Issues with https://api.flutter.dev/ d: examples Sample code and demos tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants