Skip to content

Commit

Permalink
prevent integer overflow in Fraction class
Browse files Browse the repository at this point in the history
  • Loading branch information
farindk committed Oct 14, 2023
1 parent c2d2c6b commit 6a8b586
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions libheif/box.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,32 +108,32 @@ Fraction Fraction::operator-(const Fraction& b) const

Fraction Fraction::operator+(int v) const
{
return Fraction{numerator + v * denominator, denominator};
return Fraction{numerator + v * int64_t(denominator), int64_t(denominator)};
}

Fraction Fraction::operator-(int v) const
{
return Fraction{numerator - v * denominator, denominator};
return Fraction{numerator - v * int64_t(denominator), int64_t(denominator)};
}

Fraction Fraction::operator/(int v) const
{
return Fraction{numerator, denominator * v};
return Fraction{int64_t(numerator), int64_t(denominator) * v};
}

int Fraction::round_down() const
int32_t Fraction::round_down() const
{
return numerator / denominator;
}

int Fraction::round_up() const
int32_t Fraction::round_up() const
{
return (numerator + denominator - 1) / denominator;
return int32_t((numerator + int64_t(denominator) - 1) / denominator);
}

int Fraction::round() const
int32_t Fraction::round() const
{
return (numerator + denominator / 2) / denominator;
return int32_t((numerator + int64_t(denominator) / 2) / denominator);
}

bool Fraction::is_valid() const
Expand Down

0 comments on commit 6a8b586

Please sign in to comment.