diff options
| author | Andrew Laski <andrew.laski@rackspace.com> | 2012-10-30 16:54:41 -0400 |
|---|---|---|
| committer | Andrew Laski <andrew.laski@rackspace.com> | 2012-10-30 21:30:58 -0400 |
| commit | 1d7d733d017c0a8fe2f171d9822d752ff72d9fc6 (patch) | |
| tree | 44892d6a03671cff053586e2dd2247dcc017e9a3 /nova/rootwrap | |
| parent | 7aea941005deda6f057e1e1692018d81c4aebcdc (diff) | |
| download | nova-1d7d733d017c0a8fe2f171d9822d752ff72d9fc6.tar.gz nova-1d7d733d017c0a8fe2f171d9822d752ff72d9fc6.tar.xz nova-1d7d733d017c0a8fe2f171d9822d752ff72d9fc6.zip | |
Use env to set environ when starting dnsmasq
Explictly use env to setup needed environment variables for dnsmasq when
starting to avoid problems with subprocess mis-interpreting the first
command line argument as the executable name.
Also update DnsmasqFilter to accept any command that starts with env
followed by a set of args that include an equals sign, as long as the
next arg is the dnsmasq command.
fixes bug #1073253
Change-Id: I8ac08ba2d2309934a67ed2cb28049ed5d3277d63
Diffstat (limited to 'nova/rootwrap')
| -rw-r--r-- | nova/rootwrap/filters.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/nova/rootwrap/filters.py b/nova/rootwrap/filters.py index fc130139f..52808d9ec 100644 --- a/nova/rootwrap/filters.py +++ b/nova/rootwrap/filters.py @@ -73,19 +73,21 @@ class DnsmasqFilter(CommandFilter): """Specific filter for the dnsmasq call (which includes env)""" def match(self, userargs): - if (userargs[0].startswith("FLAGFILE=") and - userargs[1].startswith("NETWORK_ID=") and - userargs[2] == "dnsmasq"): + if (userargs[0] == 'env' and + userargs[1].startswith('FLAGFILE=') and + userargs[2].startswith('NETWORK_ID=') and + userargs[3] == 'dnsmasq'): return True return False def get_command(self, userargs): - return [self.exec_path] + userargs[3:] + dnsmasq_pos = userargs.index('dnsmasq') + return [self.exec_path] + userargs[dnsmasq_pos + 1:] def get_environment(self, userargs): env = os.environ.copy() - env['FLAGFILE'] = userargs[0].split('=')[-1] - env['NETWORK_ID'] = userargs[1].split('=')[-1] + env['FLAGFILE'] = userargs[1].split('=')[-1] + env['NETWORK_ID'] = userargs[2].split('=')[-1] return env |
