From f0bda71fe2a4df4201c6195be1fe46cf895c134d Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sun, 28 Aug 2022 13:02:10 +0200 Subject: shared/path_simplify: return an unsigned value --- src/user/lib/include/unistd.h | 3 +++ src/user/lib/unistd.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/user/lib') diff --git a/src/user/lib/include/unistd.h b/src/user/lib/include/unistd.h index 1f0c002..59af24b 100644 --- a/src/user/lib/include/unistd.h +++ b/src/user/lib/include/unistd.h @@ -19,6 +19,9 @@ char *getcwd(char *buf, size_t size); * except for the root dir. Includes the null byte. * If size isn't enough to fit the path, returns the amount of bytes needed to fit * it, including the null byte. + * + * Note that some errors are only detected if *out != NULL, so you must check the return + * value twice. * @return 0 on failure, length of the path otherwise */ size_t absolutepath(char *out, const char *in, size_t size); diff --git a/src/user/lib/unistd.c b/src/user/lib/unistd.c index 1a50c3e..ce43551 100644 --- a/src/user/lib/unistd.c +++ b/src/user/lib/unistd.c @@ -163,7 +163,7 @@ size_t absolutepath(char *out, const char *in, size_t size) { if (pos <= size) { pos = path_simplify(out, out, pos); - if (pos > 0) out[pos] = '\0'; + if (pos == 0) return 0; } if (pos + 1 <= size) out[pos] = '\0'; -- cgit v1.2.3