1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-28 05:29:48 +00:00

Add a patch submitted by the author which fixes a bug I reported where

fd occasionally dies of a segfault caused by a buffer overrun on
command invocation.

Bump PORTREVISION accordingly.
This commit is contained in:
Akinori MUSHA 2002-01-21 16:02:52 +00:00
parent dcf499a625
commit 94f005e723
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=53462
4 changed files with 98 additions and 2 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= fd
PORTVERSION= 1.03u
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= misc
MASTER_SITES= http://hp.vector.co.jp/authors/VA012337/soft/fd/ \
ftp://ftp.vector.co.jp/pack/unix/util/file/filer/fd/

View File

@ -0,0 +1,48 @@
diff -u ../old/FD-1.03u/parse.c ./parse.c
--- ../old/FD-1.03u/parse.c Tue Dec 18 00:00:00 2001
+++ ./parse.c Mon Jan 21 10:15:02 2002
@@ -322,11 +322,16 @@
epath = next = NULL;
size = 0;
for (cp = path; cp && *cp; cp = next) {
- next = strtkbrk(cp, delim, 0);
- len = (next) ? (next++) - cp : strlen(cp);
- if (!len) next = cp;
+ if ((next = strtkbrk(cp, delim, 0))) {
+ len = next - cp;
+ for (i = 1; next[i] && strchr(delim, next[i]); i++);
+ }
else {
- next = cp + len;
+ len = strlen(cp);
+ i = 0;
+ }
+ next = cp + len;
+ if (len) {
tmp = _evalpath(cp, next, 0, 0);
# if !MSDOS && !defined (_NOKANJIFCONV)
cp = kanjiconv2(buf, tmp,
@@ -336,17 +341,18 @@
# endif
len = strlen(cp);
}
- for (i = 1; next[i] && strchr(delim, next[i]); i++);
epath = (char *)realloc2(epath, size + len + i + 1);
if (len) {
strcpy(epath + size, cp);
free(tmp);
+ size += len;
+ }
+ if (i) {
+ strncpy(epath + size, next, i);
+ size += i;
+ next += i;
}
- size += len;
- strncpy(epath + size, next, i);
- size += i;
- next += i;
}
if (!epath) return(strdup2(""));

View File

@ -7,7 +7,7 @@
PORTNAME= fd
PORTVERSION= 1.03u
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= misc
MASTER_SITES= http://hp.vector.co.jp/authors/VA012337/soft/fd/ \
ftp://ftp.vector.co.jp/pack/unix/util/file/filer/fd/

View File

@ -0,0 +1,48 @@
diff -u ../old/FD-1.03u/parse.c ./parse.c
--- ../old/FD-1.03u/parse.c Tue Dec 18 00:00:00 2001
+++ ./parse.c Mon Jan 21 10:15:02 2002
@@ -322,11 +322,16 @@
epath = next = NULL;
size = 0;
for (cp = path; cp && *cp; cp = next) {
- next = strtkbrk(cp, delim, 0);
- len = (next) ? (next++) - cp : strlen(cp);
- if (!len) next = cp;
+ if ((next = strtkbrk(cp, delim, 0))) {
+ len = next - cp;
+ for (i = 1; next[i] && strchr(delim, next[i]); i++);
+ }
else {
- next = cp + len;
+ len = strlen(cp);
+ i = 0;
+ }
+ next = cp + len;
+ if (len) {
tmp = _evalpath(cp, next, 0, 0);
# if !MSDOS && !defined (_NOKANJIFCONV)
cp = kanjiconv2(buf, tmp,
@@ -336,17 +341,18 @@
# endif
len = strlen(cp);
}
- for (i = 1; next[i] && strchr(delim, next[i]); i++);
epath = (char *)realloc2(epath, size + len + i + 1);
if (len) {
strcpy(epath + size, cp);
free(tmp);
+ size += len;
+ }
+ if (i) {
+ strncpy(epath + size, next, i);
+ size += i;
+ next += i;
}
- size += len;
- strncpy(epath + size, next, i);
- size += i;
- next += i;
}
if (!epath) return(strdup2(""));