diff options
author | Hiroki Sato <hrs@FreeBSD.org> | 2015-08-22 17:48:35 +0000 |
---|---|---|
committer | Hiroki Sato <hrs@FreeBSD.org> | 2015-08-22 17:48:35 +0000 |
commit | 27470e1676e69455acf06ae25ebd42ebd5bdecdb (patch) | |
tree | 445c3e315f03aa972de87391f921c655e4634f60 /print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c | |
parent | Remove textproc/prosper. The latest version is included in (diff) |
- 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.
Diffstat (limited to 'print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c')
-rw-r--r-- | print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c b/print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c new file mode 100644 index 000000000000..5e89d3b811a4 --- /dev/null +++ b/print/ghostscript9-agpl-x11/files/patch-base-gp_unix.c @@ -0,0 +1,47 @@ +--- base/gp_unix.c.orig 2015-08-22 03:07:24.257409000 +0900 ++++ base/gp_unix.c 2015-08-22 03:08:15.753173000 +0900 +@@ -52,6 +52,7 @@ + * and applied as a patch (preferable). + */ + #include <sys/types.h> ++#include <limits.h> + #include <dirent.h> + #include <dlfcn.h> + #include <string.h> +@@ -61,26 +62,25 @@ + { + DIR* dir = NULL; + struct dirent* dirent; +- char buff[1024]; ++ char buff[PATH_MAX]; + char* pbuff; + void* handle; + void (*gs_shared_init)(void); + +- strncpy(buff, GS_DEVS_SHARED_DIR, sizeof(buff) - 2); +- pbuff = buff + strlen(buff); +- *pbuff++ = '/'; *pbuff = '\0'; +- + dir = opendir(GS_DEVS_SHARED_DIR); + if (dir == 0) return; + + while ((dirent = readdir(dir)) != 0) { +- strncpy(pbuff, dirent->d_name, sizeof(buff) - (pbuff - buff) - 1); +- if ((handle = dlopen(buff, RTLD_NOW)) != 0) { +- if ((gs_shared_init = dlsym(handle, "gs_shared_init")) != 0) { ++ snprintf(buff, sizeof(buff), "%s/%s", GS_DEVS_SHARED_DIR, dirent->d_name); ++ pbuff = buff + strlen(buff) - 3; ++ if (strcmp(pbuff, ".so") != 0) ++ continue; ++ handle = dlopen(buff, RTLD_NOW); ++ if (handle == NULL) ++ continue; ++ gs_shared_init = dlsym(handle, "gs_shared_init"); ++ if (gs_shared_init != NULL) + (*gs_shared_init)(); +- } else { +- } +- } + } + + closedir(dir); |