[LTP] [PATCH v4 9/9] [RFC] metaparse: Check {min, max}_kver validity

Cyril Hrubis chrubis@suse.cz
Thu Aug 6 09:23:27 CEST 2026


Hi!
> diff --git a/metadata/Makefile b/metadata/Makefile
> index af194bcc94..9ee2441669 100644
> --- a/metadata/Makefile
> +++ b/metadata/Makefile
> @@ -3,13 +3,15 @@
>  
>  top_srcdir		?= ..
>  
> -include $(top_srcdir)/include/mk/env_pre.mk
> -include $(top_srcdir)/include/mk/functions.mk
> +include $(top_srcdir)/include/mk/testcases.mk
>  
>  MAKE_TARGETS		:= ltp.json
>  HOST_MAKE_TARGETS	:= metaparse metaparse-sh
>  INSTALL_DIR		= metadata
>  
> +metaparse: HOST_CFLAGS		+= -I$(abs_srcdir)/../include -L$(abs_builddir)/../lib
> +metaparse: HOST_LDLIBS		+= -lltp
> +
>  .PHONY: ltp.json
>  
>  ltp.json: metaparse metaparse-sh
> diff --git a/metadata/metaparse.c b/metadata/metaparse.c
> index cb141c3831..07a452a5a1 100644
> --- a/metadata/metaparse.c
> +++ b/metadata/metaparse.c
> @@ -6,6 +6,7 @@
>  
>  #define _GNU_SOURCE
>  
> +#include <assert.h>
>  #include <search.h>
>  #include <stdio.h>
>  #include <string.h>
> @@ -15,6 +16,7 @@
>  #include <errno.h>
>  
>  #include "data_storage.h"
> +#include "tst_kvercmp.h"
>  
>  #define INCLUDE_PATH_MAX 5
>  #define GROUPS_TAG "@groups"
> @@ -1372,6 +1374,37 @@ int main(int argc, char *argv[])
>  		}
>  	}
>  
> +	/* Check max_kver >= min_kver */
> +	struct data_node *max_kver = data_node_hash_get(res, "max_kver");
> +	struct data_node *min_kver = data_node_hash_get(res, "min_kver");
> +	int a1, a2, a3, b1, b2, b3;
> +
> +	if (min_kver) {
> +		assert(min_kver->type == DATA_STRING);
> +		if (tst_parse_kver(min_kver->string.val, &b1, &b2, &b3)) {
> +			fprintf(stderr, "%s: wrong min_kver: '%s'\n",
> +				argv[optind], min_kver->string.val);
> +			return 1;
> +		}
> +	}
> +
> +	if (max_kver) {
> +		assert(max_kver->type == DATA_STRING);
> +		if (tst_parse_kver(max_kver->string.val, &a1, &a2, &a3)) {
> +			fprintf(stderr, "%s: wrong max_kver: '%s'\n",
> +					argv[optind], max_kver->string.val);
> +			return 1;
> +		}
> +	}
> +
> +	if (min_kver && max_kver) {
> +		if (tst_kver_cmp(a1, a2, a3, b1, b2, b3) < 0) {
> +			fprintf(stderr, "%s: min_kver (%s) > max_kver (%s)\n",
> +					argv[optind], min_kver->string.val, max_kver->string.val);
> +			return 1;
> +		}
> +	}
> +

Andrea is working on metadata linter, that does much more than this,
e.g. checks that CVE record is valid.

This looks like a check that could be added more easily there.


-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list