summaryrefslogtreecommitdiffstats
path: root/contrib/cvs
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>1998-09-09 17:05:54 +0000
committerimp <imp@FreeBSD.org>1998-09-09 17:05:54 +0000
commit587fe3b394ae2f8c9c4a6e9b600c17464ab62508 (patch)
tree0b04532ff30271f15eba1a136dc54a22f4c3bd77 /contrib/cvs
parent098e5b9a897e4a7344bcb8dcc9e5e46afab391f2 (diff)
downloadFreeBSD-src-587fe3b394ae2f8c9c4a6e9b600c17464ab62508.zip
FreeBSD-src-587fe3b394ae2f8c9c4a6e9b600c17464ab62508.tar.gz
Use readlink correctly
Diffstat (limited to 'contrib/cvs')
-rw-r--r--contrib/cvs/src/filesubr.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/contrib/cvs/src/filesubr.c b/contrib/cvs/src/filesubr.c
index 0ccc3df..c85fe60 100644
--- a/contrib/cvs/src/filesubr.c
+++ b/contrib/cvs/src/filesubr.c
@@ -771,6 +771,7 @@ xreadlink (link)
{
char *file = NULL;
int buflen = BUFSIZ;
+ int linklen;
if (!islink (link))
return NULL;
@@ -782,13 +783,14 @@ xreadlink (link)
{
file = xrealloc (file, buflen);
errno = 0;
- readlink (link, file, buflen);
+ linklen = readlink (link, file, buflen - 1);
buflen *= 2;
}
- while (errno == ENAMETOOLONG);
+ while (linklen == -1 && errno == ENAMETOOLONG);
- if (errno)
+ if (linklen == -1)
error (1, errno, "cannot readlink %s", link);
+ file[linklen] = '\0';
return file;
}
OpenPOWER on IntegriCloud