diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index 7e7c59c3dfaa01a422eb5fd20bad04f95a8475a5..6e9328ee63469376810d21583e9fc9dd50a00e61 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -1606,20 +1606,6 @@ sc_prohibit_strings_without_use: re='\<(strn?casecmp|ffs(ll)?)\>' \ $(_sc_header_without_use) -# Extract the raw list of symbol names with this: -gl_extract_define_simple = \ - /^\# *define ([A-Z]\w+)\(/ and print $$1 -# Filter out duplicates and convert to a space-separated list: -_intprops_names = \ - $(shell f=$(gnulib_dir)/lib/intprops.h; \ - perl -lne '$(gl_extract_define_simple)' $$f | sort -u | tr '\n' ' ') -# Remove trailing space and convert to a regular expression: -_intprops_syms_re = $(subst $(_sp),|,$(strip $(_intprops_names))) -# Prohibit the inclusion of intprops.h without an actual use. -sc_prohibit_intprops_without_use: - @h='intprops.h' \ - re='\<($(_intprops_syms_re)) *\(' \ - $(_sc_header_without_use) _stddef_syms_re = NULL|offsetof|ptrdiff_t|size_t|wchar_t # Prohibit the inclusion of stddef.h without an actual use. @@ -1714,7 +1700,6 @@ sc_prohibit_defined_have_decl_tests: # ================================================================== gl_other_headers_ ?= \ - intprops.h \ openat.h \ stat-macros.h diff --git a/src/internal.h b/src/internal.h index 686b7cfcc25e9cefe5caa42c06a4ca2a763f2e20..e356db6c7842d40783680db5a2bf5e23f9919952 100644 --- a/src/internal.h +++ b/src/internal.h @@ -38,6 +38,8 @@ # define sa_assert(expr) /* empty */ #endif +#define VIR_INT_MULTIPLY_OVERFLOW(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXINT / (b))) + /* The library itself is allowed to use deprecated functions / * variables, so effectively undefine the deprecated attribute * which would otherwise be defined in libvirt.h. diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 204e1785aaff40b4622d9865f228c7dc5e990e57..4074397b30c3bba8b57d2058b3608234dd7a20ec 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -21,8 +21,6 @@ #include #include -#include "intprops.h" - #include "datatypes.h" #include "viralloc.h" #include "virfile.h" @@ -7302,7 +7300,7 @@ virDomainGetVcpuPinInfo(virDomainPtr domain, int ncpumaps, virCheckPositiveArgGoto(ncpumaps, error); virCheckPositiveArgGoto(maplen, error); - if (INT_MULTIPLY_OVERFLOW(ncpumaps, maplen)) { + if (VIR_INT_MULTIPLY_OVERFLOW(ncpumaps, maplen)) { virReportError(VIR_ERR_OVERFLOW, _("input too large: %d * %d"), ncpumaps, maplen); goto error; @@ -7503,7 +7501,7 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, else virCheckZeroArgGoto(maplen, error); - if (cpumaps && INT_MULTIPLY_OVERFLOW(maxinfo, maplen)) { + if (cpumaps && VIR_INT_MULTIPLY_OVERFLOW(maxinfo, maplen)) { virReportError(VIR_ERR_OVERFLOW, _("input too large: %d * %d"), maxinfo, maplen); goto error; diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c index 70fdb7f36b5c6e405354d5fc94c27b133ed08a48..458fc060d718ff8c880a55452bc66e8fe3cf440d 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -31,7 +31,6 @@ #include "remote_daemon_stream.h" #include "viruuid.h" #include "vircommand.h" -#include "intprops.h" #include "virnetserverservice.h" #include "virnetserver.h" #include "virfile.h" @@ -2755,7 +2754,7 @@ remoteDispatchDomainGetVcpuPinInfo(virNetServerPtr server G_GNUC_UNUSED, goto cleanup; } - if (INT_MULTIPLY_OVERFLOW(args->ncpumaps, args->maplen) || + if (VIR_INT_MULTIPLY_OVERFLOW(args->ncpumaps, args->maplen) || args->ncpumaps * args->maplen > REMOTE_CPUMAPS_MAX) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo * maplen > REMOTE_CPUMAPS_MAX")); goto cleanup; @@ -2898,7 +2897,7 @@ remoteDispatchDomainGetVcpus(virNetServerPtr server G_GNUC_UNUSED, goto cleanup; } - if (INT_MULTIPLY_OVERFLOW(args->maxinfo, args->maplen) || + if (VIR_INT_MULTIPLY_OVERFLOW(args->maxinfo, args->maplen) || args->maxinfo * args->maplen > REMOTE_CPUMAPS_MAX) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo * maplen > REMOTE_CPUMAPS_MAX")); goto cleanup; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index c11f73ab4d2d6c527e4b46a67e76c392426eac68..66472a6cc186539c536a62d9d897c9dc0ec9fe8e 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -43,7 +43,6 @@ #include "viralloc.h" #include "virfile.h" #include "vircommand.h" -#include "intprops.h" #include "virtypedparam.h" #include "viruri.h" #include "virauth.h" @@ -2236,7 +2235,7 @@ remoteDomainGetVcpuPinInfo(virDomainPtr domain, goto done; } - if (INT_MULTIPLY_OVERFLOW(ncpumaps, maplen) || + if (VIR_INT_MULTIPLY_OVERFLOW(ncpumaps, maplen) || ncpumaps * maplen > REMOTE_CPUMAPS_MAX) { virReportError(VIR_ERR_RPC, _("vCPU map buffer length exceeds maximum: %d > %d"), @@ -2405,7 +2404,7 @@ remoteDomainGetVcpus(virDomainPtr domain, maxinfo, REMOTE_VCPUINFO_MAX); goto done; } - if (INT_MULTIPLY_OVERFLOW(maxinfo, maplen) || + if (VIR_INT_MULTIPLY_OVERFLOW(maxinfo, maplen) || maxinfo * maplen > REMOTE_CPUMAPS_MAX) { virReportError(VIR_ERR_RPC, _("vCPU map buffer length exceeds maximum: %d > %d"),