aboutsummaryrefslogtreecommitdiffstats
path: root/package/hotplug2/patches/100-env_memleak.patch
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2013-06-21 16:52:56 +0000
committerJohn Crispin <john@openwrt.org>2013-06-21 16:52:56 +0000
commit08de6fcc12b413620cab4375d9a27b06e9c3ff93 (patch)
tree36515e2f4a17c3e60d176601e73f003fd48a5702 /package/hotplug2/patches/100-env_memleak.patch
parente3dcf2448fa1a8267831b1bd4e236e5f392f7ff9 (diff)
downloadupstream-08de6fcc12b413620cab4375d9a27b06e9c3ff93.tar.gz
upstream-08de6fcc12b413620cab4375d9a27b06e9c3ff93.tar.bz2
upstream-08de6fcc12b413620cab4375d9a27b06e9c3ff93.zip
hotplug2: procd does the hotplugging now
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 36987
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);
- }