From fb8e7dbd1b711d25d1033c3f5f540ce47f6c0849 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 20 Apr 2020 22:55:37 +0000 Subject: index: support --max-size / publicinbox.indexMaxSize In normal mail paths, we can rely on MTAs being configured with reasonable limits in the -watch and -mda mail injection paths. However, the MTA is bypassed in a git-only delivery path, a BOFH could inject a large message and DoS users attempting to mirror a public-inbox. This doesn't protect unindexed WWW interfaces from Email::MIME memory explosions on v1 inboxes. Probably nobody cares about unindexed WWW interfaces anymore, especially now that Xapian is optional for indexing. --- t/admin.t | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 't/admin.t') diff --git a/t/admin.t b/t/admin.t index a9d67d25..c25667b2 100644 --- a/t/admin.t +++ b/t/admin.t @@ -78,4 +78,24 @@ SKIP: { } chdir '/'; + +my @pairs = ( + '1g' => 1024 ** 3, + 666 => 666, + '1500K' => 1500 * 1024, + '15m' => 15 * (1024 ** 2), +); + +while (@pairs) { + my ($in, $out) = splice(@pairs, 0, 2); + my $orig = $in; + ok(PublicInbox::Admin::parse_unsigned(\$in), "parse_unsigned $orig"); + is($in, $out, "got $orig => ($in == $out)"); +} + +for my $v ('', 'bogus', '1p', '1gig') { + ok(!PublicInbox::Admin::parse_unsigned(\$v), + "parse_unsigned rejects $v"); +} + done_testing(); -- cgit v1.2.3-24-ge0c7