Commit Graph

82 Commits (master)

Author SHA1 Message Date
Alyssa Ross bb3dacc604 blaze822: don't try to open /dev/stdin
Use the same check is blaze822() as in blaze822_file() to ensure that
we don't try to open /dev/stdin, which is non-POSIX.
Message-Id: <20220523170921.2623516-1-hi@alyssa.is>
2 years ago
Leah Neukirchen 41bd429452 blaze822: blaze822/blaze822_mem: detect line ending before scanning end of header
A mail using CRLF which contained (for some reason) a LFLF pair would
be misparsed as the header was read until the LFLF.

Instead, scan for the first LF, check if it's preceded by CR,
and then search for the proper header terminator only.

Closes #212.
3 years ago
Leah Neukirchen 4be6e0ce91 blaze822: remove blaze822_mmap, never used. 3 years ago
Leah Neukirchen e7442fcc72 seq: - now refers to the message on stdin, use .- for previous message 4 years ago
Leah Neukirchen e56f8ad294 blaze822: blaze822_addr: null-terminate ttok at the current position before appending 4 years ago
Leah Neukirchen 3370fd5f70 blaze822: blaze822_addr: don't force add space before quoted words 4 years ago
Leah Neukirchen 8c8a4bd422 blaze822: blaze822_addr: ignore leading obs-route 4 years ago
Leah Neukirchen 604afb5011 mytimegm: replace with own implementation 4 years ago
Leah Neukirchen 081a9404cd blaze822: blaze822_addr: fix parsing of () at end of string
Found by lhynes.
5 years ago
Leah Neukirchen 11ae5504fd blaze822: blaze822_addr: don't read over the trailing nul byte when resolving \ 5 years ago
Leah Neukirchen 9dfbf48be4 blaze822: blaze822_addr: take care of string end in comments inside < 5 years ago
Leah Neukirchen 01b2f1abc6 blaze822: blaze822_addr: skip remaining characters when token is full, also with [ 5 years ago
Leah Neukirchen 5a8bb16289 blaze822: blaze822_addr: skip remaining characters when token is full 5 years ago
Leah Neukirchen 5fc3115c3f blaze822: blaze822_addr: don't drop last char when comment is not closed
Found by duncaen with afl.
5 years ago
Leah Neukirchen 3d3fffd7e8 blaze822: blaze822_addr: fix reading over the end of address if it ends with , or ;
Found by duncaen with afl.
5 years ago
Leah Neukirchen 3f2c714b42 blaze822: safe_append: fixes for various border cases
This fixes dstmax == dstlen and when src is completely full.

Found by duncaen with afl.
5 years ago
Leah Neukirchen 6ea32480f1 blaze822: blaze822_mmap: fix memleak
Found by clang 7.0.1.
5 years ago
Leah Neukirchen 4198cd42fa blaze822: blaze822_mem: fix memleak
Found by clang 7.0.1.
5 years ago
Leah Neukirchen adb5850983 blaze822: safe_append: avoid different signedness in comparison 5 years ago
Leah Neukirchen 35c11688eb blaze822: compress_hdr: avoid stepping h too far
This resulted in the message consisting of the empty line to contain a
single header which consisted of only a space.
6 years ago
Leah Neukirchen 2708f184e9 blaze822: blaze822_addr: empty ttok after using it 6 years ago
Leah Neukirchen 86b08d1925 blaze822: blaze822_addr: spaces in local-part need quoting too 6 years ago
Leah Neukirchen 4e18bb2131 blaze822: blaze822_addr: make < in <> reset mail address parsing 6 years ago
Leah Neukirchen fce30ace50 blaze822: blaze822_addr: move previous addr contents to disp 6 years ago
Leah Neukirchen 09c92d5dd8 blaze822: blaze822_addr: <> always resets the address 6 years ago
Leah Neukirchen effc645f8a blaze822: safe_append: off by one 6 years ago
Leah Neukirchen a5026c9b99 blaze822: blaze822_addr: rewrite address parsing
This hopefully fixes many bugs and subtleties related to extracting
adresses.
6 years ago
Leah Neukirchen be6bbf6056 blaze822: blaze822_addr: ensure strlen is not run on null pointer
Found by Larry Hynes.
7 years ago
Leah Neukirchen ce9ac3aff4 blaze822: blaze822_addr: quote local-part if needed 7 years ago
Leah Neukirchen 66d0eff12f style 7 years ago
Leah Neukirchen 635dfe95ad blaze822: blaze822_addr: support backslashes in atoms
This happens a lot in the real world, even if it's not RFC conforming.
7 years ago
Leah Neukirchen ea32b6a45e blaze822: blaze822_addr: ensure space for terminal null 7 years ago
Leah Neukirchen 4ac581b131 blaze822: blaze822_addr: unquote quoted strings 7 years ago
Leah Neukirchen 4d2607fe21 blaze822: blaze822_addr: skip spaces after > 7 years ago
Leah Neukirchen 10a011b94e blaze822: blaze822_addr: use memcpy instead of strcpy, we know the length 7 years ago
Leah Neukirchen 2b4e3aa66d clean up whitespace 7 years ago
Christian Neukirchen 06cc4bd693 mblaze822: blaze822_addr: add simple group parsing
Just ignores the group name, and considers ; an address separator too.
8 years ago
Christian Neukirchen e725365d45 blaze822: blaze822_addr: add bounds check when extracting display name
Discovered using the TREC 2005 Spam Public Corpora.
http://plg.uwaterloo.ca/~gvcormac/treccorpus/README.html
8 years ago
Christian Neukirchen 4bb35cbead blaze822: blaze822_addr: make a bit more robust
Start over when seeing another < in the address part.

Support "..." in the address part.
8 years ago
Christian Neukirchen d458439970 import and use timegm from musl
It's ridiculous this function is not in the standards.
8 years ago
Christian Neukirchen 7575e07b9f blaze822: keep a pointer to the original header, if we have it anyway 8 years ago
Christian Neukirchen 2aaa3cecd8 blaze822: blaze822_chdr: downcase header 8 years ago
Christian Neukirchen 4296c369f6 blaze822: blaze822_hdr_: off-by-one for first header 8 years ago
Christian Neukirchen 7636f0977c blaze822: blaze822_file: allocate enough space for read 8 years ago
Christian Neukirchen 3d0c2f8b47 cleanups 8 years ago
Christian Neukirchen fc4c696e3d blaze822: blaze822_file: allow unknown file size (e.g. pipes) 8 years ago
Christian Neukirchen 6592bdb912 import musl memmem 8 years ago
Christian Neukirchen 182a32ff9d blaze822: blaze822_addr: return 0 when no address is found
Also return null pointers instead of empty strings.
8 years ago
Christian Neukirchen ac679b264c blaze822: fix header finding with CRLF 8 years ago
Christian Neukirchen 98c03d9023 blaze822: forgot to free
Found by clang-analyzer.
8 years ago