Skip to content

Commit daf1fc6

Browse files
committed
Avoid float to int cast UB in exif
1 parent 3164186 commit daf1fc6

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

ext/exif/exif.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4598,8 +4598,9 @@ PHP_FUNCTION(exif_read_data)
45984598
exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "CCDWidth", "%dmm", (int)ImageInfo.CCDWidth);
45994599
}
46004600
if(ImageInfo.ExposureTime>0) {
4601-
if(ImageInfo.ExposureTime <= 0.5) {
4602-
exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s (1/%d)", ImageInfo.ExposureTime, (int)(0.5 + 1/ImageInfo.ExposureTime));
4601+
float recip_exposure_time = 0.5f + 1.0f/ImageInfo.ExposureTime;
4602+
if (ImageInfo.ExposureTime <= 0.5 && recip_exposure_time < INT_MAX) {
4603+
exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s (1/%d)", ImageInfo.ExposureTime, (int) recip_exposure_time);
46034604
} else {
46044605
exif_iif_add_fmt(&ImageInfo, SECTION_COMPUTED, "ExposureTime", "%0.3F s", ImageInfo.ExposureTime);
46054606
}

0 commit comments

Comments
 (0)