[hackers] [sbase] Fix off-by-one in apathmax() as the path is relative to "/" || sin
commit 3ec7f4fb3b73064ffce8302ea5f49743851fae69
Author: sin <sin_AT_2f30.org>
Date: Fri Mar 6 23:48:37 2015 +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
diff --git a/libutil/agetcwd.c b/libutil/agetcwd.c
index 4ebdb89..e61673c 100644
--- a/libutil/agetcwd.c
+++ b/libutil/agetcwd.c
_AT_@ -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
_AT_@ -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
index e58716e..135a23f 100644
--- a/libutil/cp.c
+++ b/libutil/cp.c
_AT_@ -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
_AT_@ -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
_AT_@ -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);
Received on Sat Mar 07 2015 - 01:12:20 CET
This archive was generated by hypermail 2.3.0
: Sat Mar 07 2015 - 01:24:09 CET