|
|
@ -368,20 +368,36 @@ class enigma_engine |
|
|
|
*/ |
|
|
|
function part_structure($p, $body = null) |
|
|
|
{ |
|
|
|
static $got_content = false; |
|
|
|
|
|
|
|
// Prevent from "decryption oracle" [CVE-2019-10740] (#6638)
|
|
|
|
// On mail compose (edit/reply/forward) we support encrypted content only
|
|
|
|
// in the first "content part" of the message.
|
|
|
|
if ($got_content && $this->rc->task == 'mail' && $this->rc->action == 'compose') { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// Don't be tempted to support encryption in text/html parts
|
|
|
|
// Because of EFAIL vulnerability we should never support this (#6289)
|
|
|
|
|
|
|
|
if ($p['mimetype'] == 'text/plain' || $p['mimetype'] == 'application/pgp') { |
|
|
|
$this->parse_plain($p, $body); |
|
|
|
$got_content = true; |
|
|
|
} |
|
|
|
else if ($p['mimetype'] == 'multipart/signed') { |
|
|
|
$this->parse_signed($p, $body); |
|
|
|
$got_content = true; |
|
|
|
} |
|
|
|
else if ($p['mimetype'] == 'multipart/encrypted') { |
|
|
|
$this->parse_encrypted($p); |
|
|
|
$got_content = true; |
|
|
|
} |
|
|
|
else if ($p['mimetype'] == 'application/pkcs7-mime') { |
|
|
|
$this->parse_encrypted($p); |
|
|
|
$got_content = true; |
|
|
|
} |
|
|
|
else { |
|
|
|
$got_content = $p['structure']->type === 'content'; |
|
|
|
} |
|
|
|
|
|
|
|
return $p; |
|
|
|