aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2024-04-01 12:14:50 +0200
committerKarel Zak <kzak@redhat.com>2024-04-01 12:14:50 +0200
commit7e357241b413a01c37b0b4d064bc0a47e3259361 (patch)
treee307f38b20f0107a325ec40280de4d0605204c91
parente86a6a4cce0d3b9cab5407b67c6251aa184e1450 (diff)
downloadutil-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.c14
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;
}