]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
raster-interpret.c: Fix CVE-2023-4504
authorZdenek Dohnal <zdohnal@redhat.com>
Wed, 20 Sep 2023 12:45:17 +0000 (14:45 +0200)
committerZdenek Dohnal <zdohnal@redhat.com>
Wed, 20 Sep 2023 12:45:17 +0000 (14:45 +0200)
We didn't check for end of buffer if it looks there is an escaped
character - check for NULL terminator there and if found, return NULL
as return value and in `ptr`, because a lone backslash is not
a valid PostScript character.

CHANGES.md
cups/raster-interpret.c

index 632e508210650af74187f005b3f022c8e4b1c509..b192616dead651ec2f6a12d53f5fe8d2e9f195f4 100644 (file)
@@ -4,6 +4,8 @@ CHANGES - OpenPrinting CUPS 2.4.7 - TBA
 Changes in CUPS v2.4.7 (TBA)
 -----------------------------------
 
+- CVE-2023-4504 - Fixed Heap-based buffer overflow when reading Postscript
+  in PPD files
 - Added OpenSSL support for cupsHashData (Issue #762)
 - Fixed delays in lpd backend (Issue #741)
 - Fixed extensive logging in scheduler (Issue #604)
index 6fcf731b573b324a30ae24d7d7acec77f9874eaa..b8655c8c67f74af4ce4bf5abdd03eddb886448a0 100644 (file)
@@ -1116,7 +1116,19 @@ scan_ps(_cups_ps_stack_t *st,            /* I  - Stack */
 
            cur ++;
 
-            if (*cur == 'b')
+          /*
+           * Return NULL if we reached NULL terminator, a lone backslash
+           * is not a valid character in PostScript.
+           */
+
+           if (!*cur)
+           {
+             *ptr = NULL;
+
+             return (NULL);
+           }
+
+           if (*cur == 'b')
              *valptr++ = '\b';
            else if (*cur == 'f')
              *valptr++ = '\f';