Unverified Commit 2fe364fb authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

flutter_tools: URI-decode data: URI content (#14627)

In getFlutterRoot(), scripts loaded via data: URIs are URI encoded.
getFlutterRoot() scans the contents of the data for the file:// URI path
of the Flutter SDK, which itself is URI-encoded. The end result is that
if the SDK path contains a space, the embedded file:// URI will contain
a %20. When this is encoded in a data: URI, the contents are
URI-encoded, resulting in %2520, since the % is encoded to %25.

This patch decodes the data: URI before extracting the SDK file:// URI.
parent fd6baba1
...@@ -32,8 +32,8 @@ String getFlutterRoot() { ...@@ -32,8 +32,8 @@ String getFlutterRoot() {
scriptUri = platform.script; scriptUri = platform.script;
break; break;
case 'data': case 'data':
final RegExp flutterTools = new RegExp(r'(file://[^ ;]*[/\\]flutter_tools[^%]+\.dart)%'); final RegExp flutterTools = new RegExp(r'(file://[^"]*[/\\]flutter_tools[/\\][^"]+\.dart)', multiLine: true);
final Match match = flutterTools.firstMatch(platform.script.path); final Match match = flutterTools.firstMatch(Uri.decodeFull(platform.script.path));
if (match == null) if (match == null)
throw invalidScript(); throw invalidScript();
scriptUri = Uri.parse(match.group(1)); scriptUri = Uri.parse(match.group(1));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment