sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit 7d36a3564957826db7a7a4aad9614780905237d2
parent 0c2f19c2100c15ebbd8d10cf985de3569530d521
Author: sin <sin@2f30.org>
Date:   Fri,  6 Mar 2015 23:48:37 +0000

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

Diffstat:
Mlibutil/agetcwd.c | 2+-
Mlibutil/apathmax.c | 10+++++-----
Mlibutil/cp.c | 2+-
Mlibutil/enmasse.c | 5++---
Mutil.h | 2+-
5 files changed, 10 insertions(+), 11 deletions(-)

diff --git 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 @@ -1,22 +1,22 @@ /* See LICENSE file for copyright and license details. */ #include <errno.h> -#include <stdio.h> -#include <stdlib.h> +#include <limits.h> #include <unistd.h> #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 @@ -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 @@ -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 @@ -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);