BigPizzaV3/CodexPlusPlus · error
主题包文件名不安全:{name}
Error message
主题包文件名不安全:{name} What it means
Filename guard in validate_archive_entry_name: the entry name has leading/trailing whitespace, contains NUL or ':', has '.' or '..' path segments, or nests more than two directory levels (outside __MACOSX). This constrains package layout to at most one top-level theme directory.
Source
Thrown at crates/codex-plus-core/src/dream_skin_package.rs:827
}
seen.contains("blur")
}
fn parse_json<T: serde::de::DeserializeOwned>(bytes: &[u8], label: &str) -> anyhow::Result<T> {
serde_json::from_slice(bytes).with_context(|| format!("{label} 不是有效 JSON"))
}
fn validate_archive_entry_name(name: &str) -> anyhow::Result<()> {
if name.is_empty() || name.starts_with('/') || name.contains('\\') {
bail!("主题包路径不安全:{name}");
}
if name != name.trim()
|| name.contains(['\0', ':'])
|| name.split('/').any(|part| part == "." || part == "..")
|| (!name.starts_with("__MACOSX/")
&& name.split('/').filter(|part| !part.is_empty()).count() > 2)
{
bail!("主题包文件名不安全:{name}");
}
Ok(())
}
fn normalize_package_entries(
entries: Vec<(String, Option<Vec<u8>>)>,
) -> anyhow::Result<std::collections::BTreeMap<String, Vec<u8>>> {
let content_entries = entries
.into_iter()
.filter_map(|(name, content)| content.map(|content| (name, content)))
.collect::<Vec<_>>();
if content_entries.is_empty() {
bail!("Dream Skin 主题包为空");
}
let root_files = content_entries.iter().any(|(name, _)| !name.contains('/'));
let prefix = if root_files {
if content_entries.iter().any(|(name, _)| name.contains('/')) {View on GitHub (pinned to f2074595a2)
Solutions
- Rebuild the ZIP so files sit at the root or inside a single theme folder
- Rename entries to remove whitespace, NUL, ':' and dot segments
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/codex-plus-core/src/dream_skin_package.rs:827 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/f1e81f5ddf401fd0.
Report an issue: GitHub.