fix: harden token pools and CPA export
This commit is contained in:
+12
-1
@@ -8,13 +8,24 @@ from pathlib import Path
|
||||
from .schema import credential_file_name
|
||||
|
||||
|
||||
def _is_relative_to(path, root):
|
||||
try:
|
||||
path.relative_to(root)
|
||||
return True
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
|
||||
def write_cpa_xai_auth(auth_dir, payload, filename=None):
|
||||
root = Path(auth_dir).expanduser().resolve()
|
||||
root.mkdir(parents=True, exist_ok=True)
|
||||
target_name = filename or credential_file_name(payload.get("email", ""), payload.get("sub", ""))
|
||||
target_name = Path(str(target_name)).name
|
||||
if not str(target_name).endswith(".json"):
|
||||
target_name = str(target_name) + ".json"
|
||||
destination = root / str(target_name)
|
||||
destination = (root / str(target_name)).resolve()
|
||||
if not _is_relative_to(destination, root):
|
||||
raise ValueError("CPA auth filename must stay inside auth_dir")
|
||||
data = json.dumps(payload, indent=2, ensure_ascii=False) + "\n"
|
||||
file_descriptor, temp_name = tempfile.mkstemp(prefix=".xai-", suffix=".tmp", dir=str(root))
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user