From: Sage Weil Date: Fri, 2 Oct 2009 22:29:31 +0000 (-0700) Subject: uclient: fix null deref in unlink() on null dn X-Git-Tag: v0.16~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=439ee9e3566f31dd6488cdb62b63f43492ca5dfe;p=ceph.git uclient: fix null deref in unlink() on null dn --- diff --git a/src/client/Client.h b/src/client/Client.h index f83cb7ebd5b9..4c0c39dfeafd 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -1006,13 +1006,15 @@ protected: void unlink(Dentry *dn, bool keepdir = false) { Inode *in = dn->inode; - assert(in->dn == dn); // unlink from inode - if (dn->inode->dir) dn->put(); // dir -> dn pin - dn->inode = 0; - in->dn = 0; - put_inode(in); + if (in) { + assert(in->dn == dn); + if (in->dir) dn->put(); // dir -> dn pin + dn->inode = 0; + in->dn = 0; + put_inode(in); + } // unlink from dir dn->dir->dentries.erase(dn->name);