The number is parsed manually without making sure it'll fit.
Fixes: 3bbac7cdb67
Closes: https://gitlab.com/libvirt/libvirt/-/issues/671
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
return -1;
}
while ((ctxt->cur < ctxt->end) && (g_ascii_isdigit(CUR))) {
+ if (l > LLONG_MAX / 10) {
+ virConfError(ctxt, VIR_ERR_OVERFLOW,
+ _("numeric overflow in conf value"));
+ return -1;
+ }
+
l = l * 10 + (CUR - '0');
NEXT;
}