From 11b33f6d64c3b6e63dd71a7b722999b1c346d410 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 21 Jun 2013 16:52:56 +0000 Subject: hotplug2: procd does the hotplugging now Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36987 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/hotplug2/patches/100-env_memleak.patch | 63 -------------------------- 1 file changed, 63 deletions(-) delete mode 100644 package/hotplug2/patches/100-env_memleak.patch (limited to 'package/hotplug2/patches/100-env_memleak.patch') diff --git a/package/hotplug2/patches/100-env_memleak.patch b/package/hotplug2/patches/100-env_memleak.patch deleted file mode 100644 index 28a3e2510f..0000000000 --- a/package/hotplug2/patches/100-env_memleak.patch +++ /dev/null @@ -1,63 +0,0 @@ ---- a/action.c -+++ b/action.c -@@ -31,6 +31,30 @@ static void action_dumb(const struct set - } - - /** -+ * Creates a "key=value" string from the given key and value -+ * -+ * @1 Key -+ * @2 Value -+ * -+ * Returns: Newly allocated string in "key=value" form -+ * -+ */ -+static char* alloc_env(const char *key, const char *value) { -+ size_t keylen, vallen; -+ char *combined; -+ -+ keylen = strlen(key); -+ vallen = strlen(value) + 1; -+ -+ combined = xmalloc(keylen + vallen + 1); -+ memcpy(combined, key, keylen); -+ combined[keylen] = '='; -+ memcpy(&combined[keylen + 1], value, vallen); -+ -+ return combined; -+} -+ -+/** - * Choose what action should be taken according to passed settings. - * - * @1 Hotplug settings -@@ -41,16 +65,25 @@ static void action_dumb(const struct set - */ - void action_perform(struct settings_t *settings, struct uevent_t *event) { - int i; -+ char **env; -+ -+ env = xmalloc(sizeof(char *) * event->env_vars_c); -+ -+ for (i = 0; i < event->env_vars_c; i++) { -+ env[i] = alloc_env(event->env_vars[i].key, event->env_vars[i].value); -+ putenv(env[i]); -+ } - -- for (i = 0; i < event->env_vars_c; i++) -- setenv(event->env_vars[i].key, event->env_vars[i].value, 1); -- - if (settings->dumb == 0) { - ruleset_execute(&settings->rules, event, settings); - } else { - action_dumb(settings, event); - } - -- for (i = 0; i < event->env_vars_c; i++) -+ for (i = 0; i < event->env_vars_c; i++) { - unsetenv(event->env_vars[i].key); -+ free(env[i]); -+ } -+ -+ free(env); - } -- cgit v1.2.3