Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Nov 2014 13:59:42 +0000 (UTC)
From:      Dmitry Marakasov <amdmi3@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r372013 - in head/textproc/catdoc: . files
Message-ID:  <201411011359.sA1Dxg8Y041049@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411011359.sA1Dxg8Y041049>