sharing: fix sharing after 715ddd2045 (lp:444756)

Commit 715ddd2045 broke sharing because
sometimes a multi-argument string gets passed in rule->rule.  Revert
most of that commit.  A bunch of cleanups by dcbw too.
This commit is contained in:
Noel J. Bergman
2009-10-06 16:45:39 -07:00
committed by Dan Williams
parent 72a98c5b29
commit 59d89050f2

View File

@@ -575,36 +575,36 @@ nm_act_request_set_shared (NMActRequest *req, gboolean shared)
for (iter = list; iter; iter = g_slist_next (iter)) {
ShareRule *rule = (ShareRule *) iter->data;
char *envp[1] = { NULL };
char *argv[6];
char **argv;
char *cmd;
cmd = g_strdup_printf ("%s --table %s %s %s",
IPTABLES_PATH,
rule->table,
shared ? "--insert" : "--delete",
rule->rule);
if (!cmd)
continue;
argv = g_strsplit (cmd, " ", 0);
if (argv && argv[0]) {
int status;
GError *error = NULL;
argv[0] = IPTABLES_PATH;
argv[1] = "--table";
argv[2] = rule->table;
if (shared)
argv[3] = "--insert";
else
argv[3] = "--delete";
argv[4] = rule->rule;
argv[5] = NULL;
cmd = g_strjoinv (" ", argv);
nm_info ("Executing: %s", cmd);
g_free (cmd);
if (!g_spawn_sync ("/", argv, envp, G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
share_child_setup, NULL, NULL, NULL, &status, &error)) {
nm_info ("Error executing command: (%d) %s",
error ? error->code : 0, (error && error->message) ? error->message : "unknown");
if (error)
g_error_free (error);
error ? error->code : -1,
(error && error->message) ? error->message : "(unknown)");
g_clear_error (&error);
} else if (WEXITSTATUS (status))
nm_info ("** Command returned exit status %d.", WEXITSTATUS (status));
}
g_free (cmd);
if (argv)
g_strfreev (argv);
}
g_slist_free (list);