mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-30 16:35:24 +00:00
src: remove use of the INT_MULTIPLY_OVERFLOW macro
The GLib g_size_checked_mul() function is not quite the same signature, and gives compiler warnings due to not correctly casting from gsize to guint64/32. Implementing a replacement for INT_MULTIPLY_OVERFLOW is easy enough to do ourselves. Reviewed-by: Pavel Hrdina <phrdina@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
117353f9e5
commit
f018fbac78
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -21,8 +21,6 @@
|
||||
#include <config.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#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;
|
||||
|
@ -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;
|
||||
|
@ -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"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user