autonomy-labs / app /workdir.py
ArunKr's picture
Upload folder using huggingface_hub
3d07805 verified
from __future__ import annotations
import os
from typing import Any
def safe_user_workdir(user: dict[str, Any], requested: str | None) -> str:
"""
Restrict Codex workdir to an allowlisted root to prevent traversal.
"""
base_root = "/data/codex/workspace" if os.path.isdir("/data") else "/app"
user_id = (user.get("id") or "").strip()
user_root = os.path.join(base_root, user_id) if user_id else base_root
if requested:
req = requested.strip()
if req:
norm = os.path.normpath(req)
if os.path.isabs(norm):
candidate = norm
else:
candidate = os.path.join(user_root, norm)
candidate = os.path.normpath(candidate)
base_norm = os.path.normpath(base_root)
if candidate == base_norm or candidate.startswith(base_norm + os.sep):
os.makedirs(candidate, exist_ok=True)
return candidate
os.makedirs(user_root, exist_ok=True)
return user_root