debian: fix deb822 writer/parser asymmetries
write_paragraph emitted a bare-space continuation line for empty lines inside a value, which parse_paragraphs treated as a paragraph separator and silently dropped the rest of the value; blank lines are now encoded as ' .' like dpkg does and decoded back on read. Tab-indented continuation lines now strip exactly one tab instead of keeping it. Clearsigned .dsc content no longer leaks armor metadata into parsed fields: the Hash:/Comment: header and the signature trailer are stripped before parse_paragraphs at both .dsc parse sites.
This commit is contained in:
+6
-4
@@ -390,10 +390,12 @@ fn include_dsc_artifacts(
|
||||
checksums: &mut FileChecksums,
|
||||
) -> Result<(), Box<dyn Error>> {
|
||||
let dsc_content = ctx.read_file(&upload_dir.join(dsc_name))?;
|
||||
let para = crate::debian::control::parse_paragraphs(&dsc_content)
|
||||
.into_iter()
|
||||
.next()
|
||||
.ok_or_else(|| format!("'{dsc_name}' is empty"))?;
|
||||
let para = crate::debian::control::parse_paragraphs(
|
||||
crate::debian::control::strip_clearsigned_armour(&dsc_content),
|
||||
)
|
||||
.into_iter()
|
||||
.next()
|
||||
.ok_or_else(|| format!("'{dsc_name}' is empty"))?;
|
||||
|
||||
// Names and partial checksums are filled from the very same validated
|
||||
// lines, so a listed name can never miss its checksum entry.
|
||||
|
||||
Reference in New Issue
Block a user