[Skiboot] [PATCH] nvram: Fix a possible NULL pointer de-ref in nvram_query_eq()
Vaibhav Jain
vaibhav at linux.ibm.com
Mon Sep 17 15:27:39 AEST 2018
A fault will occur if 'value == NULL' is passed to nvram_query_eq() to
check if a given key doesn't exists in nvram partition. This is an
invalid use of the API as its only supposed to be used for keys that
exist in nvram and 'value == NULL' is never possible.
Hence this patch adds an assert to the function to flag such a use and
also prevent NULL being passed as an argument to strcmp().
Signed-off-by: Vaibhav Jain <vaibhav at linux.ibm.com>
Suggested-by: Oliver O'Halloran <oohall at gmail.com>
---
Change-log:
v2 -> Instead of handling 'value == NULL' trigger an assert as
its an invalid use of the api. [Oliver]
---
core/nvram-format.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/core/nvram-format.c b/core/nvram-format.c
index 42c5cbbb..e2cb40f3 100644
--- a/core/nvram-format.c
+++ b/core/nvram-format.c
@@ -278,6 +278,14 @@ const char *nvram_query(const char *key)
}
+/*
+ * nvram_query_eq() - Check if the given 'key' exists and
+ * is set to 'value'.
+ *
+ * Note: Its an error to check for non-existence of a key
+ * by passing 'value == NULL' as a key's value can never be
+ * NULL in nvram.
+ */
bool nvram_query_eq(const char *key, const char *value)
{
const char *s = nvram_query(key);
@@ -285,5 +293,6 @@ bool nvram_query_eq(const char *key, const char *value)
if (!s)
return false;
+ assert(value != NULL);
return !strcmp(s, value);
}
--
2.17.1
More information about the Skiboot
mailing list