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:
parent
dcf499a625
commit
94f005e723
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=53462
@ -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/
|
||||
|
48
misc/fd/files/patch-parse.c
Normal file
48
misc/fd/files/patch-parse.c
Normal 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(""));
|
@ -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/
|
||||
|
48
shells/fd/files/patch-parse.c
Normal file
48
shells/fd/files/patch-parse.c
Normal 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(""));
|
Loading…
Reference in New Issue
Block a user