From 9273f2d49a15031d549ac13d56b4ee1d4217f46f Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Mon, 1 Nov 2010 18:30:32 +0300 Subject: [PATCH] Fix detect chroot function. --- pym/cl_vars_share.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/pym/cl_vars_share.py b/pym/cl_vars_share.py index 2543358..afae055 100644 --- a/pym/cl_vars_share.py +++ b/pym/cl_vars_share.py @@ -510,20 +510,10 @@ class varsShare: if reRes: return reRes.group() - reChroot = re.compile("^(?:_=.*bin/chroot|CHROOT=on)$",re.S) - def isChroot(self,pid): - """Recursive detect chroot mode""" - if not os.access('/proc/%d/environ'%pid,R_OK): + """Detect chroot mode by different mountinfo""" + if not os.access('/proc/self/mountinfo',R_OK) or \ + not os.access('/proc/1/mountinfo',R_OK): return False - if filter(self.reChroot.match, - open('/proc/%d/environ'%pid,'r').read().split('\x00')): - return True - else: - ppid = filter(lambda x:x.startswith('PPid:'), - open('/proc/%d/status'%pid,'r').readlines())[0] - ppid = int(ppid.strip().partition('\t')[2]) - if ppid == 0: - return False - else: - return self.isChroot(ppid) + return open('/proc/1/mountinfo','r').read() != \ + open('/proc/self/mountinfo','r').read()