freebsd-ports/print/ghostscript7-base/files/patch-src-gconf.c
Hiroki Sato 27470e1676 - Split ghostscript into X11-independent and -dependent parts:
* print/ghostscript{7,8,9,9-agpl}-base

   Installs Ghostscript binary, libgs, and related files.
   These ports do not depend on X11 libraries (i.e. x11* devices
   are not available).  USES=ghostscript will set dependency on
   one of them depending on GHOSTSCRIPT_DEFAULT.

   The default device is set to "display" or "bbox".

 * print/ghostscript{7,8,9,9-agpl}-x11

   Installs a shared library which provides X11 support to
   the installed Ghostscript binaries.  x11* devices will be
   enabled when the library is available.

   This depends on *-base (RUN_DEPENDS).  USES=ghostscript:x11
   will set dependency on one of them.

- Fix integer overflow reported as CVE-2015-3228.

- Update Uses/ghostscript.mk:

 * Add x11 keyword.  nox11 keyword is now obsolete.

 * Use packagename in *_DEPENDS line to prevent relationship between
   -base and -x11 packages from being broken.

- Fix x11/nox11 keyword and bump PORTREVISION in ports using
  USES=ghostscript to update dependency of pre-compiled packages.
2015-08-22 17:48:35 +00:00

43 lines
1 KiB
C

--- src/gconf.c.orig 2003-01-17 09:49:00.000000000 +0900
+++ src/gconf.c 2015-08-22 01:52:10.741824000 +0900
@@ -81,7 +81,8 @@
/* Set up the device table. */
#define device_(dev) (const gx_device *)&dev,
#define device2_(dev) &dev,
-private const gx_device *const gx_device_list[] = {
+static const gx_device *gx_device_list[1024] = {
+ /* as shared library are adding drivers here, so removed constness */
#include "gconf.h"
0
};
@@ -149,9 +150,29 @@
gs_lib_device_list(const gx_device * const **plist,
gs_memory_struct_type_t ** pst)
{
+ int i;
+
if (plist != 0)
*plist = gx_device_list;
if (pst != 0)
*pst = NULL;
- return countof(gx_device_list) - 1;
+
+ for (i = 0; i < countof(gx_device_list) - 1; ++i)
+ if (!gx_device_list[i])
+ break;
+ return i;
}
+
+#ifdef GS_DEVS_SHARED
+void
+gs_lib_register_device(const gx_device *dev)
+{
+ int i;
+
+ for (i = 0; i < countof(gx_device_list) - 1; ++i)
+ if (!gx_device_list[i]) {
+ gx_device_list[i] = dev;
+ return;
+ }
+}
+#endif