From 6b5f4d1c8ec902f63b1444fa107c2366ae5d435f Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Fri, 23 Aug 2013 15:43:03 -0400 Subject: [PATCH] Extra checks --- procprotect.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/procprotect.c b/procprotect.c index f8ab6e6..741a799 100644 --- a/procprotect.c +++ b/procprotect.c @@ -91,8 +91,14 @@ static int lookup_fast_entry(struct kretprobe_instance *ri, struct pt_regs *regs int ret = -1; struct procprotect_ctx *ctx; struct nameidata *nd = (struct nameidata *) regs->di; - struct dentry *parent = nd->path.dentry; - struct inode *pinode = parent->d_inode; + struct dentry *parent; + struct inode *pinode; + + if (!nd) return; + parent = nd->path.dentry; + + if (!parent) return; + pinode = parent->d_inode; if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC && current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) { @@ -132,9 +138,13 @@ static int lookup_slow_entry(struct kretprobe_instance *ri, struct pt_regs *regs struct procprotect_ctx *ctx; struct nameidata *nd = (struct nameidata *) regs->di; struct path *p = (struct path *) regs->si; + struct dentry *parent; + struct inode *pinode; - struct dentry *parent = nd->path.dentry; - struct inode *pinode = parent->d_inode; + if (!nd) return; + parent = nd->path.dentry; + if (!parent) return; + pinode= parent->d_inode; if (pinode->i_sb->s_magic == PROC_SUPER_MAGIC && current->nsproxy->mnt_ns!=init_task.nsproxy->mnt_ns) { -- 2.43.0