From 2547c7c78d1f82b80e25de7faf88a5e10b1df968 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Tue, 2 Sep 2025 00:11:35 +0500 Subject: [PATCH] chore(changelog): update Signed-off-by: Boris Yumankulov --- CHANGELOG.md | 13 +++++++++++++ portprotonqt/theme_manager.py | 14 -------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f904a5c..b73b50d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ Все заметные изменения в этом проекте фиксируются в этом файле. Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/). +## [Unreleased] + +### Added + +### Changed +- Добавлена проверка безопасности в theme_manager.py для всех сторонних тем, с проверкой на запрещённые модули и функции (подробности см. в коде theme_manager под полями FORBIDDEN_MODULES и FORBIDDEN_FUNCTIONS) + +### Fixed + +### Contributors + +--- + ## [0.1.5] - 2025-08-31 ### Added diff --git a/portprotonqt/theme_manager.py b/portprotonqt/theme_manager.py index cde0a4a..a13d10d 100644 --- a/portprotonqt/theme_manager.py +++ b/portprotonqt/theme_manager.py @@ -1,7 +1,6 @@ import importlib.util import os import ast -import re from portprotonqt.logger import get_logger from PySide6.QtSvg import QSvgRenderer from PySide6.QtGui import QIcon, QColor, QFontDatabase, QPixmap, QPainter @@ -34,13 +33,6 @@ FORBIDDEN_FUNCTIONS = { "__import__", } -FORBIDDEN_PROPERTIES = { - "box-shadow", - "backdrop-filter", - "cursor", - "text-shadow", -} - def check_theme_safety(theme_file: str) -> bool: """ Проверяет файл темы на наличие запрещённых модулей и функций. @@ -51,12 +43,6 @@ def check_theme_safety(theme_file: str) -> bool: with open(theme_file) as f: content = f.read() - # Проверка на запрещённые QSS-свойства - for prop in FORBIDDEN_PROPERTIES: - if re.search(rf"{prop}\s*:", content, re.IGNORECASE): - logger.error(f"Unknown QSS property found '{prop}' in file {theme_file}") - has_errors = True - # Проверка на опасные импорты и функции try: tree = ast.parse(content)