[dm-devel] [PATCH 1/1] libmultipath: fix files read from config_dir

Martin Wilck Martin.Wilck at suse.com
Fri Feb 7 17:08:11 UTC 2020


On Fri, 2020-02-07 at 11:45 -0300, Enzo Matsumiya wrote:
> If config_dir contains a file named, for example, "some.conf.backup",
> this file
> will still be loaded by multipath because process_config_dir()
> (libmultipath/config.c) uses strstr() to check for the ".conf"
> extension, but
> that doesn't guarantee that ".conf" is at the end of the filename.
> 
> This patch will make sure that only files ending in ".conf" are
> loaded from
> config_dir.
> 
> This is to comply with config_dir entry description in man 5
> multipath.conf.
> 
> Signed-off-by: Enzo Matsumiya <ematsumiya at suse.de>
> ---
>  libmultipath/config.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libmultipath/config.c b/libmultipath/config.c
> index 20e3b8bf..4785ade8 100644
> --- a/libmultipath/config.c
> +++ b/libmultipath/config.c
> @@ -671,8 +671,11 @@ process_config_dir(struct config *conf, vector
> keywords, char *dir)
>  	sr.n = n;
>  	pthread_cleanup_push_cast(free_scandir_result, &sr);
>  	for (i = 0; i < n; i++) {
> -		if (!strstr(namelist[i]->d_name, ".conf"))
> +		char *ext = strrchr(namelist[i]->d_name, '.');
> +
> +		if (!ext || strcmp(ext, ".conf"))
>  			continue;
> +
>  		old_hwtable_size = VECTOR_SIZE(conf->hwtable);
>  		snprintf(path, LINE_MAX, "%s/%s", dir, namelist[i]-
> >d_name);
>  		path[LINE_MAX-1] = '\0';

Reviewed-by: Martin Wilck <mwilck at suse.com>

-- 
Dr. Martin Wilck <mwilck at suse.com>, Tel. +49 (0)911 74053 2107
SUSE  Software Solutions Germany GmbH
HRB 36809, AG Nürnberg GF: Felix
Imendörffer






More information about the dm-devel mailing list