aboutsummaryrefslogtreecommitdiffstats
path: root/package/hotplug2/patches/100-env_memleak.patch
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2013-06-21 16:52:56 +0000
committerJohn Crispin <blogic@openwrt.org>2013-06-21 16:52:56 +0000
commit11b33f6d64c3b6e63dd71a7b722999b1c346d410 (patch)
treea3fccc610783efe93535b1b1f5cf54c15c047b22 /package/hotplug2/patches/100-env_memleak.patch
parent6501c4d0da29a3294ae18e6fcf69e7a6df294098 (diff)
downloadmaster-187ad058-11b33f6d64c3b6e63dd71a7b722999b1c346d410.tar.gz
master-187ad058-11b33f6d64c3b6e63dd71a7b722999b1c346d410.tar.bz2
master-187ad058-11b33f6d64c3b6e63dd71a7b722999b1c346d410.zip
hotplug2: procd does the hotplugging now
Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36987 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/hotplug2/patches/100-env_memleak.patch')
-rw-r--r--package/hotplug2/patches/100-env_memleak.patch63
1 files changed, 0 insertions, 63 deletions
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);
- }