Fix use-after-free in cms

Closes #941
This commit is contained in:
Steven Fackler 2018-06-01 19:38:52 -07:00
parent a1cb6a7328
commit 15cb335e66
1 changed files with 7 additions and 15 deletions

View File

@ -138,22 +138,14 @@ impl CmsContentInfo {
flags: CMSOptions, flags: CMSOptions,
) -> Result<CmsContentInfo, ErrorStack> { ) -> Result<CmsContentInfo, ErrorStack> {
unsafe { unsafe {
let signcert = match signcert { let signcert = signcert.map_or(ptr::null_mut(), |p| p.as_ptr());
Some(cert) => cert.as_ptr(), let pkey = pkey.map_or(ptr::null_mut(), |p| p.as_ptr());
None => ptr::null_mut(), let data_bio = match data {
}; Some(data) => Some(MemBioSlice::new(data)?),
let pkey = match pkey { None => None,
Some(pkey) => pkey.as_ptr(),
None => ptr::null_mut(),
};
let data_bio_ptr = match data {
Some(data) => MemBioSlice::new(data)?.as_ptr(),
None => ptr::null_mut(),
};
let certs = match certs {
Some(certs) => certs.as_ptr(),
None => ptr::null_mut(),
}; };
let data_bio_ptr = data_bio.as_ref().map_or(ptr::null_mut(), |p| p.as_ptr());
let certs = certs.map_or(ptr::null_mut(), |p| p.as_ptr());
let cms = cvt_p(ffi::CMS_sign( let cms = cvt_p(ffi::CMS_sign(
signcert, signcert,