From 7d36a3564957826db7a7a4aad9614780905237d2 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 6 Mar 2015 23:48:37 +0000 Subject: [PATCH] Fix off-by-one in apathmax() as the path is relative to "/" 1) Use size_t * instead of long * 2) Fallback to PATH_MAX instead of BUFSIZ 3) Header cleanup --- libutil/agetcwd.c | 2 +- libutil/apathmax.c | 10 +++++----- libutil/cp.c | 2 +- libutil/enmasse.c | 5 ++--- util.h | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/libutil/agetcwd.c b/libutil/agetcwd.c index 4ebdb89..e61673c 100644 --- a/libutil/agetcwd.c +++ b/libutil/agetcwd.c @@ -7,7 +7,7 @@ char * agetcwd(void) { char *buf; - long size; + size_t size; apathmax(&buf, &size); if (!getcwd(buf, size)) diff --git a/libutil/apathmax.c b/libutil/apathmax.c index d2412b8..b99b31b 100644 --- a/libutil/apathmax.c +++ b/libutil/apathmax.c @@ -1,22 +1,22 @@ /* See LICENSE file for copyright and license details. */ #include -#include -#include +#include #include #include "../util.h" void -apathmax(char **p, long *size) +apathmax(char **p, size_t *size) { errno = 0; - if ((*size = pathconf("/", _PC_PATH_MAX)) < 0) { if (errno == 0) { - *size = BUFSIZ; + *size = PATH_MAX; } else { eprintf("pathconf:"); } + } else { + (*size)++; } *p = emalloc(*size); } diff --git a/libutil/cp.c b/libutil/cp.c index e58716e..135a23f 100644 --- a/libutil/cp.c +++ b/libutil/cp.c @@ -28,7 +28,7 @@ cp(const char *s1, const char *s2, int depth) { FILE *f1, *f2; char *ns1, *ns2; - long size1, size2; + size_t size1, size2; struct dirent *d; struct stat st; struct utimbuf ut; diff --git a/libutil/enmasse.c b/libutil/enmasse.c index 24af279..54d02eb 100644 --- a/libutil/enmasse.c +++ b/libutil/enmasse.c @@ -11,11 +11,10 @@ void enmasse(int argc, char *argv[], int (*fn)(const char *, const char *, int)) { + struct stat st; char *buf, *dir; int i, len; - long size; - struct stat st; - size_t dlen; + size_t size, dlen; if (argc == 2 && !(stat(argv[1], &st) == 0 && S_ISDIR(st.st_mode))) { fnck(argv[0], argv[1], fn, 0); diff --git a/util.h b/util.h index 2fec2d9..3f16731 100644 --- a/util.h +++ b/util.h @@ -21,7 +21,7 @@ extern char *argv0; char *agetcwd(void); -void apathmax(char **, long *); +void apathmax(char **, size_t *); void *ecalloc(size_t, size_t); void *emalloc(size_t);