Don't check for the conditions used inside get_projected_parent_dn(),
simply check if the returned value is valid.
Fix for:
CID 716915: Dereference after null check (FORWARD_NULL)
var_deref_model: Passing null pointer this->get_projected_parent_dn()
to pre_dirty, which dereferences it.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
version_t CInode::pre_dirty()
{
- version_t pv;
- if (parent || !projected_parent.empty()) {
- pv = get_projected_parent_dn()->pre_dirty(get_projected_version());
+ version_t pv;
+ CDentry* _cdentry = get_projected_parent_dn();
+ if (_cdentry) {
+ pv = _cdentry->pre_dirty(get_projected_version());
dout(10) << "pre_dirty " << pv << " (current v " << inode.version << ")" << dendl;
} else {
assert(is_base());