BigPizzaV3/CodexPlusPlus · error
主题包包含加密内容或链接:{name}
Error message
主题包包含加密内容或链接:{name} What it means
Security guard in validate_and_read_package: a ZIP entry is flagged encrypted or is a symlink. Encrypted entries cannot be inspected and symlink entries enable path escapes, so the package is rejected outright.
Source
Thrown at crates/codex-plus-core/src/dream_skin_package.rs:109
if bytes.is_empty() || bytes.len() > PACKAGE_LIMIT {
bail!("Dream Skin 主题包超过 32 MiB 限制");
}
let mut archive =
ZipArchive::new(Cursor::new(bytes)).context("Dream Skin 主题包不是有效 ZIP")?;
if archive.len() == 0 || archive.len() > FILE_LIMIT {
bail!("Dream Skin 主题包文件数量必须在 1 到 32 之间");
}
let mut entries = Vec::new();
let mut unpacked = 0usize;
for index in 0..archive.len() {
let file = archive
.by_index(index)
.context("读取 Dream Skin ZIP 条目失败")?;
let name = file.name().to_string();
validate_archive_entry_name(&name)?;
if file.encrypted() || file.is_symlink() {
bail!("主题包包含加密内容或链接:{name}");
}
if file.is_dir() {
entries.push((name, None));
continue;
}
let base_name = name.rsplit('/').next().unwrap_or_default();
if base_name == ".DS_Store" || name.starts_with("__MACOSX/") {
entries.push((name, None));
continue;
}
if !ALLOWED_FILES.contains(&base_name) {
bail!("主题包包含不支持的文件:{name}");
}
let limit = file_limit(base_name);
let mut content = Vec::new();
file.take((limit + 1) as u64)
.read_to_end(&mut content)
.context("读取 Dream Skin ZIP 内容失败")?;View on GitHub (pinned to f2074595a2)
Solutions
- Repackage the theme without ZIP encryption
- Replace symlink entries with real files
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/codex-plus-core/src/dream_skin_package.rs:109 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23).
Data as JSON: /api/errors/86debcdfe3943e82.
Report an issue: GitHub.