summaryrefslogtreecommitdiff
path: root/tools/env/fw_env.h
diff options
context:
space:
mode:
authorStefano Babic <sbabic@denx.de>2017-04-05 16:08:03 (GMT)
committerTom Rini <trini@konsulko.com>2017-04-12 17:28:29 (GMT)
commit33f0086cb74628080bb4bcb565b25c8ea5299d79 (patch)
tree6e699d84f62664df00e6bd2dc39d1e281330a279 /tools/env/fw_env.h
parent00c234f38fccaa24b052691913cb3a7e8bc2b3a1 (diff)
downloadu-boot-33f0086cb74628080bb4bcb565b25c8ea5299d79.tar.xz
env: fix memory leak in fw_env routines
fw_env_open allocates buffers to store the environment, but these buffers are never freed. This becomes quite nasty using the fw_ tools as library, because each access to the environment (even just reading a variable) generates a memory leak equal to the size of the environment. Fix this renaming fw_env_close() as fw_env_flush(), because the function really flushes the environment from RAM to storage, and add a fw_env_close function to free the allocated resources. Signed-off-by: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'tools/env/fw_env.h')
-rw-r--r--tools/env/fw_env.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/tools/env/fw_env.h b/tools/env/fw_env.h
index cf346b3..04bb646 100644
--- a/tools/env/fw_env.h
+++ b/tools/env/fw_env.h
@@ -53,7 +53,7 @@ int fw_printenv(int argc, char *argv[], int value_only, struct env_opts *opts);
* @opts: how to retrieve environment from flash, defaults are used if NULL
*
* Description:
- * Uses fw_env_open, fw_env_write, fw_env_close
+ * Uses fw_env_open, fw_env_write, fw_env_flush
*
* Return:
* 0 on success, -1 on failure (modifies errno)
@@ -70,7 +70,7 @@ int fw_setenv(int argc, char *argv[], struct env_opts *opts);
* @opts: encryption key, configuration file, defaults are used if NULL
*
* Description:
- * Uses fw_env_open, fw_env_write, fw_env_close
+ * Uses fw_env_open, fw_env_write, fw_env_flush
*
* Return:
* 0 success, -1 on failure (modifies errno)
@@ -138,7 +138,17 @@ char *fw_getenv(char *name);
int fw_env_write(char *name, char *value);
/**
- * fw_env_close - write the environment from RAM cache back to flash
+ * fw_env_flush - write the environment from RAM cache back to flash
+ *
+ * @opts: encryption key, configuration file, defaults are used if NULL
+ *
+ * Return:
+ * 0 on success, -1 on failure (modifies errno)
+ */
+int fw_env_flush(struct env_opts *opts);
+
+/**
+ * fw_env_close - free allocated structure and close env
*
* @opts: encryption key, configuration file, defaults are used if NULL
*
@@ -147,6 +157,7 @@ int fw_env_write(char *name, char *value);
*/
int fw_env_close(struct env_opts *opts);
+
/**
* fw_env_version - return the current version of the library
*