mbox: implement member size limit of 100MB and autodetec thunderbird mboxes (look for .msf)
This commit is contained in:
parent
d5a6105795
commit
d942b44785
@ -41,6 +41,10 @@
|
|||||||
#include "ptmutex.h"
|
#include "ptmutex.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
// Define maximum message size for safety. 100MB would seem reasonable
|
||||||
|
static const unsigned int max_mbox_member_size = 100 * 1024 * 1024;
|
||||||
|
|
||||||
class FpKeeper {
|
class FpKeeper {
|
||||||
public:
|
public:
|
||||||
FpKeeper(FILE **fpp) : m_fpp(fpp) {}
|
FpKeeper(FILE **fpp) : m_fpp(fpp) {}
|
||||||
@ -279,6 +283,14 @@ bool MimeHandlerMbox::set_document_file(const string &fn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// And double check for thunderbird
|
||||||
|
string tbirdmsf = fn + ".msf";
|
||||||
|
if ((m_quirks&MBOXQUIRK_TBIRD) == 0 && access(tbirdmsf.c_str(), 0) == 0) {
|
||||||
|
LOGDEB(("MimeHandlerMbox: detected unconfigured tbird mbox in %s\n",
|
||||||
|
fn.c_str()));
|
||||||
|
m_quirks |= MBOXQUIRK_TBIRD;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,6 +503,12 @@ bool MimeHandlerMbox::next_document()
|
|||||||
line[ll] = '\n';
|
line[ll] = '\n';
|
||||||
line[ll+1] = 0;
|
line[ll+1] = 0;
|
||||||
msgtxt += line;
|
msgtxt += line;
|
||||||
|
if (msgtxt.size() > max_mbox_member_size) {
|
||||||
|
LOGERR(("mh_mbox: huge message (more than %u MB) inside %s,"
|
||||||
|
" giving up\n", max_mbox_member_size/(1024*1024),
|
||||||
|
m_fn.c_str()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOGDEB2(("Message text length %d\n", msgtxt.size()));
|
LOGDEB2(("Message text length %d\n", msgtxt.size()));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user