util: don't validate empty params

If there are no parameters, there is nothing to validate.
If params == NULL, memcpy below results in memcpy(sorted, NULL, 0),
which is UB.

Found by UBSAN. Example of this codepath: virDomainBlockCopy()
(where nparams == 0 is valid) -> qemuDomainBlockCopy()

Signed-off-by: Oleg Vasilev <oleg.vasilev@virtuozzo.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
This commit is contained in:
Oleg Vasilev 2023-06-23 15:20:50 +06:00 committed by Michal Privoznik
parent b7f7f07542
commit 7b793a00bd

View File

@ -68,6 +68,10 @@ virTypedParamsValidate(virTypedParameterPtr params, int nparams, ...)
g_autofree virTypedParameterPtr sorted = NULL;
g_autofree virTypedParameterPtr keys = NULL;
if (!nparams) {
return 0;
}
va_start(ap, nparams);
sorted = g_new0(virTypedParameter, nparams);