diff options
author | Karel Zak <kzak@redhat.com> | 2024-04-01 12:14:50 +0200 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2024-04-01 12:14:50 +0200 |
commit | 7e357241b413a01c37b0b4d064bc0a47e3259361 (patch) | |
tree | e307f38b20f0107a325ec40280de4d0605204c91 | |
parent | e86a6a4cce0d3b9cab5407b67c6251aa184e1450 (diff) | |
download | util-linux-7e357241b413a01c37b0b4d064bc0a47e3259361.tar.gz |
libblkid: Fix segfault when blkid.conf doesn't exist
* Move 'line' and 'uevent' to the beginning of the LIBECONF code.
* Remove unwanted space between function name and arguments.
* Check for 'line' pointer before dereferencing.
References: https://github.com/util-linux/util-linux/pull/2883
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | libblkid/src/config.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/libblkid/src/config.c b/libblkid/src/config.c index 7b8b04f921..66c1864f0c 100644 --- a/libblkid/src/config.c +++ b/libblkid/src/config.c @@ -153,6 +153,8 @@ struct blkid_config *blkid_read_config(const char *filename) #else /* !HAVE_LIBECONF */ static econf_file *file = NULL; + char *line = NULL; + bool uevent = false; econf_err error; if (filename) { @@ -187,7 +189,6 @@ struct blkid_config *blkid_read_config(const char *filename) } } - bool uevent = false; if ((error = econf_getBoolValue(file, NULL, "SEND_UEVENT", &uevent))) { if (error != ECONF_NOKEY) { DBG(CONFIG, ul_debug("couldn't fetch SEND_UEVENT corrently: %s", econf_errString(error))); @@ -209,7 +210,6 @@ struct blkid_config *blkid_read_config(const char *filename) } } - char *line = NULL; if ((error = econf_getStringValue(file, NULL, "EVALUATE", &line))) { conf->nevals = 0; if (error != ECONF_NOKEY) { @@ -219,7 +219,7 @@ struct blkid_config *blkid_read_config(const char *filename) DBG(CONFIG, ul_debug("key CACHE_FILE not found, using built-in default ")); } } else { - if (*line && parse_evaluate(conf, line) == -1) + if (line && *line && parse_evaluate(conf, line) == -1) goto err; } @@ -238,8 +238,8 @@ dflt: if (f) fclose(f); #else - econf_free (file); - free (line); + econf_free(file); + free(line); #endif return conf; err: @@ -248,8 +248,8 @@ err: #ifndef HAVE_LIBECONF fclose(f); #else - econf_free (file); - free (line); + econf_free(file); + free(line); #endif return NULL; } |