diff options
author | Yufang Zhang <zhangyufang@360.cn> | 2013-05-14 14:58:19 +0800 |
---|---|---|
committer | Yufang Zhang <yufang521247@gmail.com> | 2013-05-15 18:58:51 +0800 |
commit | ea78eecbd275fa7466e56d6eb0dc7a3c60f5b640 (patch) | |
tree | c7ceea117521f3caf6ecc083e5c7f7b3bbedfb91 /openstack | |
parent | 3e0114f570d97c47b1b8eefce0bcd27146098b8d (diff) | |
download | oslo-ea78eecbd275fa7466e56d6eb0dc7a3c60f5b640.tar.gz oslo-ea78eecbd275fa7466e56d6eb0dc7a3c60f5b640.tar.xz oslo-ea78eecbd275fa7466e56d6eb0dc7a3c60f5b640.zip |
Update KillFilter to stop at '\0' for readlink() function.
Python's readlink() implementation doesn't stop at '\0' when reading
file path. Thus after dnsmasq upgrade, it may return something like
'/usr/sbin/dnsmasq\03453 (deleted)', while C's or Shell's readlink()
return '/usr/sbin/dnsmasq'. This patch fixes this problem by cutting
the readlink() results with '\0', so that KillFilter could get correct
path.
Bug 1179793
Change-Id: I7354941e0508e019c8c9b63b87ad39f52ccb51ca
Diffstat (limited to 'openstack')
-rw-r--r-- | openstack/common/rootwrap/filters.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/openstack/common/rootwrap/filters.py b/openstack/common/rootwrap/filters.py index 58121cb..ae7c62c 100644 --- a/openstack/common/rootwrap/filters.py +++ b/openstack/common/rootwrap/filters.py @@ -194,6 +194,10 @@ class KillFilter(CommandFilter): return False try: command = os.readlink("/proc/%d/exe" % int(args[1])) + # NOTE(yufang521247): /proc/PID/exe may have '\0' on the + # end, because python doen't stop at '\0' when read the + # target path. + command = command.split('\0')[0] # NOTE(dprince): /proc/PID/exe may have ' (deleted)' on # the end if an executable is updated or deleted if command.endswith(" (deleted)"): |