- Fix debugging output from gdevcups (CVE-2009-4270, bug #540760).
- Harden ghostscript's debugging output functions (bug #540760).
This commit is contained in:
		
							parent
							
								
									2656f78197
								
							
						
					
					
						commit
						59db7de965
					
				
							
								
								
									
										17
									
								
								ghostscript-CVE-2009-4270.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								ghostscript-CVE-2009-4270.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | diff -up ghostscript-8.70/cups/gdevcups.c.gdevcups-debug ghostscript-8.70/cups/gdevcups.c
 | ||||||
|  | --- ghostscript-8.70/cups/gdevcups.c.gdevcups-debug	2009-05-20 23:30:48.000000000 +0100
 | ||||||
|  | +++ ghostscript-8.70/cups/gdevcups.c	2009-11-24 17:16:11.929250977 +0000
 | ||||||
|  | @@ -2816,11 +2816,11 @@ cups_put_params(gx_device     *pdev,	/* 
 | ||||||
|  |    } \ | ||||||
|  |    else if (code == 0) \ | ||||||
|  |    { \ | ||||||
|  | -    dprintf2("DEBUG: Setting %s to \"%s\"...\n", sname, \
 | ||||||
|  | -             (char *)stringval.data); \
 | ||||||
|  |      strncpy(cups->header.name, (const char *)stringval.data, \ | ||||||
|  |              stringval.size); \ | ||||||
|  |      cups->header.name[stringval.size] = '\0'; \ | ||||||
|  | +    dprintf2("DEBUG: Setting %s to \"%s\"...\n", sname, \
 | ||||||
|  | +             cups->header.name); \
 | ||||||
|  |    } | ||||||
|  |   | ||||||
|  |  #define intoption(name, sname, type) \ | ||||||
							
								
								
									
										64
									
								
								ghostscript-vsnprintf.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								ghostscript-vsnprintf.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | |||||||
|  | diff -up ghostscript-8.70/base/gsmisc.c.vsnprintf ghostscript-8.70/base/gsmisc.c
 | ||||||
|  | --- ghostscript-8.70/base/gsmisc.c.vsnprintf	2008-01-07 18:43:02.000000000 +0000
 | ||||||
|  | +++ ghostscript-8.70/base/gsmisc.c	2009-11-24 17:16:38.575250571 +0000
 | ||||||
|  | @@ -69,10 +69,10 @@ int outprintf(const gs_memory_t *mem, co
 | ||||||
|  |   | ||||||
|  |      va_start(args, fmt); | ||||||
|  |   | ||||||
|  | -    count = vsprintf(buf, fmt, args);
 | ||||||
|  | +    count = vsnprintf(buf, sizeof (buf), fmt, args);
 | ||||||
|  |      outwrite(mem, buf, count); | ||||||
|  | -    if (count >= PRINTF_BUF_LENGTH) {
 | ||||||
|  | -	count = sprintf(buf, 
 | ||||||
|  | +    if (count == -1 || count >= sizeof (buf)) {
 | ||||||
|  | +	count = snprintf(buf, sizeof (buf),
 | ||||||
|  |  	    "PANIC: printf exceeded %d bytes.  Stack has been corrupted.\n",  | ||||||
|  |  	    PRINTF_BUF_LENGTH); | ||||||
|  |  	outwrite(mem, buf, count); | ||||||
|  | @@ -89,10 +89,10 @@ int errprintf(const char *fmt, ...)
 | ||||||
|  |   | ||||||
|  |      va_start(args, fmt); | ||||||
|  |   | ||||||
|  | -    count = vsprintf(buf, fmt, args);
 | ||||||
|  | +    count = vsnprintf(buf, sizeof (buf), fmt, args);
 | ||||||
|  |      errwrite(buf, count); | ||||||
|  | -    if (count >= PRINTF_BUF_LENGTH) {
 | ||||||
|  | -	count = sprintf(buf, 
 | ||||||
|  | +    if (count == -1 || count >= sizeof (buf)) {
 | ||||||
|  | +	count = snprintf(buf, sizeof (buf),
 | ||||||
|  |  	    "PANIC: printf exceeded %d bytes.  Stack has been corrupted.\n",  | ||||||
|  |  	    PRINTF_BUF_LENGTH); | ||||||
|  |  	errwrite(buf, count); | ||||||
|  | @@ -236,7 +236,7 @@ int gs_throw_imp(const char *func, const
 | ||||||
|  |      va_list ap; | ||||||
|  |   | ||||||
|  |      va_start(ap, fmt); | ||||||
|  | -    vsprintf(msg, fmt, ap);
 | ||||||
|  | +    vsnprintf(msg, sizeof (msg), fmt, ap);
 | ||||||
|  |      msg[sizeof(msg) - 1] = 0; | ||||||
|  |      va_end(ap); | ||||||
|  |   | ||||||
|  | diff -up ghostscript-8.70/base/gxttfb.c.vsnprintf ghostscript-8.70/base/gxttfb.c
 | ||||||
|  | --- ghostscript-8.70/base/gxttfb.c.vsnprintf	2009-07-09 06:59:44.000000000 +0100
 | ||||||
|  | +++ ghostscript-8.70/base/gxttfb.c	2009-11-24 17:16:38.577250996 +0000
 | ||||||
|  | @@ -246,7 +246,7 @@ static int DebugPrint(ttfFont *ttf, cons
 | ||||||
|  |   | ||||||
|  |      if (gs_debug_c('Y')) { | ||||||
|  |  	va_start(args, fmt); | ||||||
|  | -	count = vsprintf(buf, fmt, args);
 | ||||||
|  | +	count = vsnprintf(buf, sizeof (buf), fmt, args);
 | ||||||
|  |  	/* NB: moved debug output from stdout to stderr | ||||||
|  |  	 */ | ||||||
|  |  	errwrite(buf, count); | ||||||
|  | diff -up ghostscript-8.70/base/rinkj/rinkj-byte-stream.c.vsnprintf ghostscript-8.70/base/rinkj/rinkj-byte-stream.c
 | ||||||
|  | --- ghostscript-8.70/base/rinkj/rinkj-byte-stream.c.vsnprintf	2008-04-04 02:02:16.000000000 +0100
 | ||||||
|  | +++ ghostscript-8.70/base/rinkj/rinkj-byte-stream.c	2009-11-24 17:16:38.577250996 +0000
 | ||||||
|  | @@ -43,7 +43,7 @@ rinkj_byte_stream_printf (RinkjByteStrea
 | ||||||
|  |    va_list ap; | ||||||
|  |   | ||||||
|  |    va_start (ap, fmt); | ||||||
|  | -  len = vsprintf (str, fmt, ap);
 | ||||||
|  | +  len = vsnprintf (str, sizeof (str), fmt, ap);
 | ||||||
|  |    va_end (ap); | ||||||
|  |    return rinkj_byte_stream_write (bs, str, len); | ||||||
|  |  } | ||||||
| @ -5,7 +5,7 @@ Summary: A PostScript interpreter and renderer. | |||||||
| Name: ghostscript | Name: ghostscript | ||||||
| Version: %{gs_ver} | Version: %{gs_ver} | ||||||
| 
 | 
 | ||||||
| Release: 1%{?dist} | Release: 2%{?dist} | ||||||
| 
 | 
 | ||||||
| # Included CMap data is Redistributable, no modification permitted, | # Included CMap data is Redistributable, no modification permitted, | ||||||
| # see http://bugzilla.redhat.com/487510 | # see http://bugzilla.redhat.com/487510 | ||||||
| @ -25,6 +25,8 @@ Patch6: ghostscript-system-jasper.patch | |||||||
| Patch7: ghostscript-pksmraw.patch | Patch7: ghostscript-pksmraw.patch | ||||||
| Patch8: ghostscript-jbig2dec-nullderef.patch | Patch8: ghostscript-jbig2dec-nullderef.patch | ||||||
| Patch9: ghostscript-gs-executable.patch | Patch9: ghostscript-gs-executable.patch | ||||||
|  | Patch10: ghostscript-CVE-2009-4270.patch | ||||||
|  | Patch11: ghostscript-vsnprintf.patch | ||||||
| 
 | 
 | ||||||
| Requires: urw-fonts >= 1.1, ghostscript-fonts | Requires: urw-fonts >= 1.1, ghostscript-fonts | ||||||
| BuildRequires: xz | BuildRequires: xz | ||||||
| @ -115,6 +117,12 @@ rm -rf libpng zlib jpeg jasper | |||||||
| # Fix scripts so they don't get broken on install (bug #502550). | # Fix scripts so they don't get broken on install (bug #502550). | ||||||
| %patch9 -p1 -b .gs-executable | %patch9 -p1 -b .gs-executable | ||||||
| 
 | 
 | ||||||
|  | # Fix debugging output from gdevcups (bug #540760). | ||||||
|  | %patch10 -p1 -b .CVE-2009-4270 | ||||||
|  | 
 | ||||||
|  | # Harden ghostscript's debugging output functions (bug #540760). | ||||||
|  | %patch11 -p1 -b .vsnprintf | ||||||
|  | 
 | ||||||
| # Convert manual pages to UTF-8 | # Convert manual pages to UTF-8 | ||||||
| from8859_1() { | from8859_1() { | ||||||
| 	iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_" | 	iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_" | ||||||
| @ -296,6 +304,10 @@ rm -rf $RPM_BUILD_ROOT | |||||||
| %{_libdir}/libgs.so | %{_libdir}/libgs.so | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu Dec 24 2009 Tim Waugh <twaugh@redhat.com> 8.70-2 | ||||||
|  | - Fix debugging output from gdevcups (CVE-2009-4270, bug #540760). | ||||||
|  | - Harden ghostscript's debugging output functions (bug #540760). | ||||||
|  | 
 | ||||||
| * Mon Aug  3 2009 Tim Waugh <twaugh@redhat.com> 8.70-1 | * Mon Aug  3 2009 Tim Waugh <twaugh@redhat.com> 8.70-1 | ||||||
| - 8.70. | - 8.70. | ||||||
| - License has changed to GPLv3+.  Packages containing programs that | - License has changed to GPLv3+.  Packages containing programs that | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user