BigPizzaV3/CodexPlusPlus · error

主题包包含不支持的文件:{name}

Error message

主题包包含不支持的文件:{name}

What it means

Whitelist guard in validate_and_read_package: a file entry's base name is not in ALLOWED_FILES (manifest.json, theme.json, theme.css, background.*, LICENSE.txt, manifest.sig). Only the known package files may ship; anything else (scripts, executables, extra assets) is rejected.

Source

Thrown at crates/codex-plus-core/src/dream_skin_package.rs:121

        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 内容失败")?;
        if content.is_empty() || content.len() > limit {
            bail!("主题包文件 {name} 超过大小限制");
        }
        unpacked = unpacked.saturating_add(content.len());
        if unpacked > UNPACKED_LIMIT {
            bail!("Dream Skin 主题包解包后超过 64 MiB 限制");
        }
        entries.push((name, Some(content)));
    }

    let mut files = normalize_package_entries(entries)?;

View on GitHub (pinned to f2074595a2)

Solutions

  1. Remove the unsupported file from the package
  2. Rename the file to an allowed package file name if it serves that role
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/codex-plus-core/src/dream_skin_package.rs:121 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/f23dd58369aa9ea7. Report an issue: GitHub.