From 72d88f29da1ece634028420317233a45ff8e015b Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Fri, 17 Apr 2015 15:26:59 +0100 Subject: bitbake: lib/bb/utils: add safeguard against recursively deleting things we shouldn't Add some very basic safeguard against recursively deleting paths such as / and /home in the event of bugs or user mistakes. Addresses [YOCTO #7620]. (Bitbake rev: 56cddeb9e1e4d249f84ccd6ef65db245636e38ea) Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- bitbake/lib/bb/tests/utils.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'bitbake/lib/bb/tests/utils.py') diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py index 507de2de3c..6e09858e51 100644 --- a/bitbake/lib/bb/tests/utils.py +++ b/bitbake/lib/bb/tests/utils.py @@ -21,6 +21,7 @@ import unittest import bb +import os class VerCmpString(unittest.TestCase): @@ -88,3 +89,19 @@ class VerCmpString(unittest.TestCase): # Check that clearly invalid operator raises an exception self.assertRaises(bb.utils.VersionStringException, bb.utils.vercmp_string_op, '0', '0', '$') + + +class Path(unittest.TestCase): + def test_unsafe_delete_path(self): + checkitems = [('/', True), + ('//', True), + ('///', True), + (os.getcwd().count(os.sep) * ('..' + os.sep), True), + (os.environ.get('HOME', '/home/test'), True), + ('/home/someone', True), + ('/home/other/', True), + ('/home/other/subdir', False), + ('', False)] + for arg1, correctresult in checkitems: + result = bb.utils._check_unsafe_delete_path(arg1) + self.assertEqual(result, correctresult, '_check_unsafe_delete_path("%s") != %s' % (arg1, correctresult)) -- cgit v1.2.3-54-g00ecf