svn commit: r372013 - in head/textproc/catdoc: . files
Dmitry Marakasov
amdmi3 at FreeBSD.org
Sat Nov 1 13:59:43 UTC 2014
Author: amdmi3
Date: Sat Nov 1 13:59:42 2014
New Revision: 372013
URL: https://svnweb.freebsd.org/changeset/ports/372013
QAT: https://qat.redports.org/buildarchive/r372013/
Log:
- Fix UB which leads to guaranteed crash when built with clang 3.4.1+ (e.g. on FreeBSD 10.1+)
Reported by: Alex Petrov
Added:
head/textproc/catdoc/files/patch-src__fileutil.c (contents, props changed)
Modified:
head/textproc/catdoc/Makefile
Modified: head/textproc/catdoc/Makefile
==============================================================================
--- head/textproc/catdoc/Makefile Sat Nov 1 13:49:40 2014 (r372012)
+++ head/textproc/catdoc/Makefile Sat Nov 1 13:59:42 2014 (r372013)
@@ -3,7 +3,7 @@
PORTNAME= catdoc
PORTVERSION= 0.94.2
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= textproc
MASTER_SITES= http://mirror.amdmi3.ru/distfiles/ \
LOCAL/amdmi3 \
Added: head/textproc/catdoc/files/patch-src__fileutil.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/textproc/catdoc/files/patch-src__fileutil.c Sat Nov 1 13:59:42 2014 (r372013)
@@ -0,0 +1,60 @@
+diff --git src/fileutil.c src/fileutil.c
+index d902a6a..6afddec 100644
+--- src/fileutil.c
++++ src/fileutil.c
+@@ -71,13 +71,12 @@ char *find_file(char *name, const char *path)
+ char *q;
+ char path_buf[PATH_BUF_SIZE];
+ char dir_sep[2]={DIR_SEP,0};
+- for (p=path;p;p=q+1) {
++ for (p=path;p;) {
+ q=strchr(p,LIST_SEP);
+
+ if (q) {
+ if (!prepare_path_buf(path_buf,p,q)) continue;
+ } else {
+- q--;
+ if (!prepare_path_buf(path_buf,p,p+strlen(p))) continue;
+ }
+ strcat(path_buf,dir_sep); /* always one char */
+@@ -88,6 +87,11 @@ char *find_file(char *name, const char *path)
+ free(name);
+ return strdup(path_buf);
+ }
++ if (q) {
++ p = q + 1;
++ } else {
++ p = NULL;
++ }
+ }
+ /* if we are here, nothing found */
+ free(name);
+@@ -186,7 +190,7 @@ void list_charsets(void) {
+ int count,glob_flags=GLOB_ERR;
+ #endif
+ char **ptr;
+- for (p=charset_path;p;p=q+1) {
++ for (p=charset_path;p;) {
+ q=strchr(p,LIST_SEP);
+
+ if (q) {
+@@ -197,7 +201,6 @@ void list_charsets(void) {
+ strncpy(path_buf,p,q-p);
+ path_buf[q-p]=0;
+ } else {
+- q--;
+ if (strlen(p)>=PATH_BUF_SIZE) continue;
+ strcpy(path_buf,p);
+ }
+@@ -244,6 +247,11 @@ void list_charsets(void) {
+ }
+ glob_flags|=GLOB_APPEND;
+ #endif
++ if (q) {
++ p = q + 1;
++ } else {
++ p = NULL;
++ }
+ }
+ #ifdef __MSDOS__
+ fputs("utf-8\n",stdout);
More information about the svn-ports-head
mailing list