eigrpd: Up convert to uint64_t before doing math

Intentionally up convert uint8_t and uint32_t values
to a uint64_t before doing math to make Coverity happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit c960cb28f7)
This commit is contained in:
Donald Sharp 2022-02-18 10:55:16 -05:00 committed by mergify-bot
parent b487f0aff0
commit 82021021f0

View File

@ -86,19 +86,24 @@ eigrp_metric_t eigrp_calculate_metrics(struct eigrp *eigrp,
*/ */
if (eigrp->k_values[0]) if (eigrp->k_values[0])
composite += (eigrp->k_values[0] * metric.bandwidth); composite += ((eigrp_metric_t)eigrp->k_values[0] *
(eigrp_metric_t)metric.bandwidth);
if (eigrp->k_values[1]) if (eigrp->k_values[1])
composite += ((eigrp->k_values[1] * metric.bandwidth) composite += (((eigrp_metric_t)eigrp->k_values[1] *
/ (256 - metric.load)); (eigrp_metric_t)metric.bandwidth) /
(256 - metric.load));
if (eigrp->k_values[2]) if (eigrp->k_values[2])
composite += (eigrp->k_values[2] * metric.delay); composite += ((eigrp_metric_t)eigrp->k_values[2] *
(eigrp_metric_t)metric.delay);
if (eigrp->k_values[3] && !eigrp->k_values[4]) if (eigrp->k_values[3] && !eigrp->k_values[4])
composite *= eigrp->k_values[3]; composite *= (eigrp_metric_t)eigrp->k_values[3];
if (!eigrp->k_values[3] && eigrp->k_values[4]) if (!eigrp->k_values[3] && eigrp->k_values[4])
composite *= (eigrp->k_values[4] / metric.reliability); composite *= ((eigrp_metric_t)eigrp->k_values[4] /
(eigrp_metric_t)metric.reliability);
if (eigrp->k_values[3] && eigrp->k_values[4]) if (eigrp->k_values[3] && eigrp->k_values[4])
composite *= ((eigrp->k_values[4] / metric.reliability) composite *= (((eigrp_metric_t)eigrp->k_values[4] /
+ eigrp->k_values[3]); (eigrp_metric_t)metric.reliability) +
(eigrp_metric_t)eigrp->k_values[3]);
composite = composite =
(composite <= EIGRP_METRIC_MAX) ? composite : EIGRP_METRIC_MAX; (composite <= EIGRP_METRIC_MAX) ? composite : EIGRP_METRIC_MAX;