diff options
| author | Zuul <zuul@review.opendev.org> | 2026-07-02 14:09:16 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2026-07-02 14:09:16 +0000 |
| commit | 575baf05c4964d46f0c8f13bcdf193ce5e863c82 (patch) | |
| tree | 9057c8f73317b4f86c2ed34779f40bdd574aae4e /docker | |
| parent | 00d2e9671d38a147f77b639e8fcf1cb8903aea25 (diff) | |
| parent | 505428fd51f3801c39850437f908fcf106a8fc94 (diff) | |
| download | kolla-575baf05c4964d46f0c8f13bcdf193ce5e863c82.tar.gz kolla-575baf05c4964d46f0c8f13bcdf193ce5e863c82.zip | |
Merge "Fix parsing of permissions with special bits"
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/base/set_configs.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py index 542537e4c..c0a4af76c 100644 --- a/docker/base/set_configs.py +++ b/docker/base/set_configs.py @@ -410,11 +410,20 @@ def handle_permissions(config): path, uid, gid) if perm: - # NOTE(Jeffrey4l): py3 need '0oXXX' format for octal literals, - # and py2 support such format too. - if len(perm) == 4 and perm[1] != 'o': - perm = ''.join([perm[:1], 'o', perm[1:]]) - perm = int(perm, base=0) + # Accept valid UNIX permission notation + # (e.g. 644, 0600, 1777, 2755) + # or equivalent Python octal literals + # (e.g. 0o644, 0o1777, 0o2755). + if re.fullmatch(r'[0-7]{3,4}', perm): + perm = int(perm, 8) + elif re.fullmatch(r'0o[0-7]{3,4}', perm): + perm = int(perm, 0) + else: + raise ValueError( + f"Invalid permission '{perm}'. Expected a valid UNIX " + "permission (e.g. 644, 0600, 2755) or a Python octal " + "literal (e.g. 0o644, 0o0600, 0o2755)." + ) # Ensure execute bit on directory if read bit is set if os.path.isdir(path): |
