summaryrefslogtreecommitdiff
path: root/src/user/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/lib')
-rw-r--r--src/user/lib/file.c2
-rw-r--r--src/user/lib/fs/dir.c7
2 files changed, 7 insertions, 2 deletions
diff --git a/src/user/lib/file.c b/src/user/lib/file.c
index 05ae2e8..b55a19d 100644
--- a/src/user/lib/file.c
+++ b/src/user/lib/file.c
@@ -151,7 +151,7 @@ size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restri
char *fgets(char *buf, int size, FILE *f) {
char c = '\0';
- size_t pos = 0;
+ long pos = 0;
while (pos < (size-1) && c != '\n' && fread(&c, 1, 1, f))
buf[pos++] = c;
buf[pos++] = '\0';
diff --git a/src/user/lib/fs/dir.c b/src/user/lib/fs/dir.c
index 0529bfe..35028bd 100644
--- a/src/user/lib/fs/dir.c
+++ b/src/user/lib/fs/dir.c
@@ -1,5 +1,6 @@
#include <camellia/syscalls.h>
#include <errno.h>
+#include <limits.h>
#include <string.h>
#include <user/lib/fs/dir.h>
@@ -20,10 +21,14 @@ bool dir_append(struct dirbuild *db, const char *name) {
bool dir_appendl(struct dirbuild *db, const char *name, size_t len) {
if (db->error) return true;
+ if (len > (size_t)LONG_MAX) {
+ db->error = -1;
+ return true;
+ }
len++; // account for the null byte
- if (db->offset < len) {
+ if (db->offset < (long)len) {
name += db->offset;
len -= db->offset;
db->offset = 0;