File: 0072-use-a-different-path-for-positive-and-negative-value.patch

package info (click to toggle)
imagemagick 8%3A6.9.11.60%2Bdfsg-1.6%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 76,816 kB
  • sloc: ansic: 349,503; cpp: 21,804; xml: 11,029; perl: 6,417; sh: 5,877; makefile: 3,042; tcl: 459
file content (49 lines) | stat: -rw-r--r-- 1,407 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From: Cristy <urban-warrior@imagemagick.org>
Date: Sat, 20 Apr 2024 06:40:49 -0400
Subject: use a different path for positive and negative values

This is needed for fixing CVE-2023-34151

Cast from double to integer is hard to correctly and was fixed by a few patches upstream.

origin: https://github.com/ImageMagick/ImageMagick6/commit/bc5ac19bd93895e5c6158aad0d8e49a0c50b0ebb.patch
---
 magick/image-private.h | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/magick/image-private.h b/magick/image-private.h
index 839ed72..4e03993 100644
--- a/magick/image-private.h
+++ b/magick/image-private.h
@@ -63,16 +63,23 @@ static inline size_t CastDoubleToLong(const double x)
       errno=ERANGE;
       return(0);
     }
-  value=floor(x);
-  if (value > ((double) MAGICK_SSIZE_MAX))
+  if (x < 0.0)
     {
-      errno=ERANGE;
-      return((ssize_t) MAGICK_SSIZE_MAX);
-    } value=ceil(x);
-  if (value < ((double) MAGICK_SSIZE_MIN))
+      value=ceil(x);
+      if (value < ((double) MAGICK_SSIZE_MIN))
+        {
+          errno=ERANGE;
+          return((ssize_t) MAGICK_SSIZE_MIN);
+        }
+    }
+  else
     {
-      errno=ERANGE;
-      return(0);
+      value=floor(x);
+      if (value > ((double) MAGICK_SSIZE_MAX))
+        {
+          errno=ERANGE;
+          return((ssize_t) MAGICK_SSIZE_MAX);
+        }
     }
   return((ssize_t) value);
 }