commit 46b358ec5c4ed576ca28a4a7546e92f8d8ef1ff2
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Sat Aug 27 10:06:40 2022 +0000
diff --git a/include/dir.h b/include/dir.h
index 6dd0961..4927f3c 100644
--- a/include/dir.h
+++ b/include/dir.h
@@ -626 +627 @@ void cd_back(void);
void enter_dir(char *);
void remove_marked(void);
char * mode_to_s(struct dir_entry_t *);
+bool check_dpath(char *);
// number of directory entries
diff --git a/src/dir.c b/src/dir.c
index 138e8a1..d06e978 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -3003 +30011 @@ char * mode_to_s(struct dir_entry_t * f) {
return s;
}
+
+// check if path exists & is a dir
+bool check_dpath(char * s) {
+ struct stat buf;
+ if (stat(s, &buf) == -1) return false;
+ if ((buf.st_mode & S_IFMT) == S_IFDIR) return true;
+ return false;
+}
diff --git a/src/main.c b/src/main.c
index e4fa4b2..af0c7dc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4213 +4218 @@ int main(int argc, char ** argv) {
help();
} else {
cwd = realpath(argv[i], NULL);
+ if (!check_dpath(cwd)) {
+ fputs("Invalid directory specified\n", stderr);
+ exit(1);
+ }
chdir(cwd);
}
}
}
if (!cwd) {
- char * p = getenv("PWD");
+ char p[PATH_MAX + 1];
+ getcwd(p, sizeof(p));
cwd = malloc(strlen(p) + 2);
strcpy(cwd, p);
}