diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-09 19:48:22 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-09 19:48:22 +0200 |
| commit | 57dc93c3069ccac583533f4f2d4f9cbc2720c73e (patch) | |
| tree | cef3411c3fbb3d3289a3b35f9a3c55adf34cfebc /tests/test_offline.py | |
| parent | 0fd9f1632d25142323df419e189c46c8068694bf (diff) | |
| download | abusectl-master.tar.gz abusectl-master.zip | |
Three parts and no message/rfc822: the original carries every identifier the
first property keeps out, and text/rfc822-headers is the standard's own
answer for a report that cannot include the message.
The third part filters the manifest's headers against the same whitelist
parse.report_headers() applies, rather than trusting it. The structural
argument is that report cannot disclose what it was never given, and a
manifest is a file the user edits: that is exactly a way it can be given a
To. parse still decides; this refuses to publish what it did not decide for.
A header value is attacker-supplied free text the spec keeps deliberately, so
a newline in a Subject forges a header line in a part read entirely as
headers. RFC 2047 turns the break into a fold instead, and a parser unfolds it
back to one header with the value intact. Applied only when a value carries
something unsafe, since encoding every header costs the desk the legibility
this part exists for.
From is built with headerregistry.Address: "Example Consulting, Ltd" through
an f-string parses back as two addresses, the first a bogus addr-spec with no
domain, so a desk's reply reaches nobody.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xj1ayFRSUQ2u7cwb3S4axE
Diffstat (limited to 'tests/test_offline.py')
0 files changed, 0 insertions, 0 deletions
