]> code.ossystems Code Review - openembedded-core.git/commitdiff
recipetool: create: fix port number parsing issue
authorMing Liu <liu.ming50@gmail.com>
Sun, 1 Apr 2018 21:15:27 +0000 (23:15 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 3 Apr 2018 09:57:50 +0000 (10:57 +0100)
A flaw was found when I run:
$ recipetool create "ssh://git@xxx.xxx:7999/xxx.git"

the url turned out to be: "git://git@xxx.xxx/7999/xxx.git;protocol=ssh"
after parsing, the port number was parsed as part of the path, this is
definitely wrong and lead to fetching failures.

This issue could be fixed in reformat_git_uri, by filtering out port
numbers when formatting ":".

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/recipetool/create.py

index 2fc9e0aa4e0e227e1b990f8d371dcfa747c70f4c..a3710285bbb0f3c6b5b4672d40aa5b8be4f0de50 100644 (file)
@@ -383,8 +383,10 @@ def reformat_git_uri(uri):
         # which causes decodeurl to fail getting the right host and path
         if len(host.split(':')) > 1:
             splitslash = host.split(':')
-            host = splitslash[0]
-            path = '/' + splitslash[1] + path
+            # Port number should not be split from host
+            if not re.match('^[0-9]+$', splitslash[1]):
+                host = splitslash[0]
+                path = '/' + splitslash[1] + path
         #Algorithm:
         # if user is defined, append protocol=ssh or if a protocol is defined, then honor the user-defined protocol
         # if no user & password is defined, check for scheme type and append the protocol with the scheme type