Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/buildstream/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import threading
import itertools
from contextlib import contextmanager
from pathlib import Path
from pathlib import Path, PurePath
from typing import Callable, IO, Iterable, Iterator, Optional, Tuple, Union, Pattern
from google.protobuf import timestamp_pb2

Expand Down Expand Up @@ -1064,7 +1064,12 @@ def _copy_directories(srcdir, destdir, target):
#
def _ensure_real_directory(root, path):
destpath = root
for name in os.path.split(path):
purepath = PurePath(path)
if purepath.is_absolute():
raise UtilError(f"Expected relative path, got absolute path: {path}")
for name in purepath.parts:
if name == "..":
raise UtilError(f"`..` not allowed in relative path: {path}")
destpath = os.path.join(destpath, name)
try:
deststat = os.lstat(destpath)
Expand Down
Loading