[ninjalog_uploader] Exclude absolute paths and options from targets

Absolute paths and options start with '-' should be excluded from targetrs.

Bug: b/270907050
Change-Id: Ic430381084b6d3673c34b45c8b3ca967f0f8af89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4302232
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Auto-Submit: Junji Watanabe <jwata@google.com>
Commit-Queue: Junji Watanabe <jwata@google.com>
changes/32/4302232/5
Junji Watanabe 2 years ago committed by LUCI CQ
parent 4b6a833b54
commit 8d6af632bf

@ -86,15 +86,26 @@ def GetBuildTargetFromCommandLine(cmdline):
targets = [] targets = []
while idx < len(cmdline): while idx < len(cmdline):
if cmdline[idx] in onearg_flags: arg = cmdline[idx]
if arg in onearg_flags:
idx += 2 idx += 2
continue continue
if (cmdline[idx][:2] in onearg_flags or cmdline[idx] in zeroarg_flags): if (arg[:2] in onearg_flags or arg in zeroarg_flags):
idx += 1 idx += 1
continue continue
targets.append(cmdline[idx]) # A target doesn't start with '-'.
if arg.startswith('-'):
idx += 1
continue
# Avoid uploading absolute paths accidentally. e.g. b/270907050
if os.path.isabs(arg):
idx += 1
continue
targets.append(arg)
idx += 1 idx += 1
return targets return targets

@ -122,6 +122,22 @@ class NinjalogUploaderTest(unittest.TestCase):
['python3', 'ninja.py', '-C', 'out/Release', 'chrome', 'all']), ['python3', 'ninja.py', '-C', 'out/Release', 'chrome', 'all']),
['chrome', 'all']) ['chrome', 'all'])
@unittest.skipIf(sys.platform == 'win32', 'posix path test')
def test_get_build_target_from_command_line_filter_posix(self):
self.assertEqual(
ninjalog_uploader.GetBuildTargetFromCommandLine([
'python3', 'ninja.py', '-C', 'out/Release', 'chrome', 'all',
'/path/to/foo', '-p'
]), ['chrome', 'all'])
@unittest.skipUnless(sys.platform == 'win32', 'Windows path test')
def test_get_build_target_from_command_line_filter_win(self):
self.assertEqual(
ninjalog_uploader.GetBuildTargetFromCommandLine([
'python3', 'ninja.py', '-C', 'out/Release', 'chrome', 'all',
'C:\\path\\to\\foo', '-p'
]), ['chrome', 'all'])
def test_get_j_flag(self): def test_get_j_flag(self):
self.assertEqual(ninjalog_uploader.GetJflag( self.assertEqual(ninjalog_uploader.GetJflag(
['ninja']), None) ['ninja']), None)

Loading…
Cancel
Save