From 56db9828781ea69e4b18adfc5d25ed86515a603a Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Thu, 27 Mar 2014 21:37:25 -0700 Subject: [PATCH] Limit amount read when slurping message into memory. --- cmd/md2pq/md2pq.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cmd/md2pq/md2pq.go b/cmd/md2pq/md2pq.go index a2649b3..3396966 100644 --- a/cmd/md2pq/md2pq.go +++ b/cmd/md2pq/md2pq.go @@ -7,6 +7,7 @@ import ( "expvar" "flag" "fmt" + "io" "io/ioutil" "os" "path/filepath" @@ -36,7 +37,12 @@ var ( dupCnt = expvar.NewInt("duplicates-found") ) -var CRCR = []byte("\n\n") +var ( + CRCR = []byte("\n\n") + // Maximum bytes we parse when decoding + // email message, 50MB. + maxMessageSize int64 = 50 << 20 +) func Load(db *sql.DB, uid int, root string, skip *set.StringSet) error { dup := set.NewStrings() @@ -89,7 +95,7 @@ func Load(db *sql.DB, uid int, root string, skip *set.StringSet) error { } defer r.Close() - b, err := ioutil.ReadAll(r) + b, err := ioutil.ReadAll(&io.LimitedReader{R: r, N: maxMessageSize}) if err != nil { return err }