{"record":{"id":"72343129e4651142","repo":"BigPizzaV3/CodexPlusPlus","slug":"manifest-sig","errorCode":null,"errorMessage":"manifest.sig 超过大小限制","messagePattern":"manifest\\.sig 超过大小限制","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":166,"sourceCode":"        .iter()\n        .find(|name| files.contains_key(**name))\n        .map(|name| (*name).to_string())\n        .context(\"主题包必须包含一个背景图片\")?;\n    if [\"background.webp\", \"background.jpg\", \"background.png\"]\n        .iter()\n        .filter(|name| files.contains_key(**name))\n        .count()\n        != 1\n    {\n        bail!(\"主题包必须且只能包含一个背景图片\");\n    }\n    let image_bytes = files.remove(&image_name).expect(\"image was checked above\");\n    validate_image_content(&image_name, &image_bytes)?;\n    let license_bytes = files.remove(\"LICENSE.txt\");\n    let signature = files.remove(\"manifest.sig\");\n    if let Some(signature) = signature {\n        if signature.len() > SIGNATURE_LIMIT {\n            bail!(\"manifest.sig 超过大小限制\");\n        }\n    }\n    if !files.is_empty() {\n        bail!(\"主题包包含未处理文件\");\n    }\n\n    let manifest: DreamSkinPackageManifest = parse_json(&manifest_bytes, \"manifest.json\")?;\n    validate_manifest(&manifest, platform)?;\n    let theme: Value = parse_json(&theme_bytes, \"theme.json\")?;\n    validate_theme(&theme, &manifest, &image_name)?;\n    let css = String::from_utf8(css_bytes).context(\"theme.css 不是有效 UTF-8\")?;\n    validate_safe_css(&css)?;\n    validate_manifest_files(\n        &manifest,\n        &manifest_bytes,\n        &theme_bytes,\n        css.as_bytes(),\n        &image_name,","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L148-L184","documentation":"Size guard in validate_and_read_package: an optional manifest.sig entry exceeds SIGNATURE_LIMIT. A legitimately detached signature is small; an oversized one is malformed or hostile and is rejected instead of being stored.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:166 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Regenerate manifest.sig with a normal (small) signature","Remove manifest.sig if signature verification is not intended"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}