From daf1fc6e316d435cee9edd812b904e597e241ae5 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 9 Oct 2019 17:33:01 +0200 Subject: [PATCH] Avoid float to int cast UB in exif --- ext/exif/exif.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ext/exif/exif.c b/ext/exif/exif.c index b47e55fba1..f961f44a46 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -4598,8 +4598,9 @@ PHP_FUNCTION(exif_read_data) exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "CCDWidth", "%dmm", (int)ImageInfo.CCDWidth); } if(ImageInfo.ExposureTime>0) { - if(ImageInfo.ExposureTime <= 0.5) { - exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s (1/%d)", ImageInfo.ExposureTime, (int)(0.5 + 1/ImageInfo.ExposureTime)); + float recip_exposure_time = 0.5f + 1.0f/ImageInfo.ExposureTime; + if (ImageInfo.ExposureTime <= 0.5 && recip_exposure_time < INT_MAX) { + exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s (1/%d)", ImageInfo.ExposureTime, (int) recip_exposure_time); } else { exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s", ImageInfo.ExposureTime); } -- 2.49.0