From d4ea4cc70d46a8004d43d013fa074d4997e05f46 Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Mon, 11 Mar 2024 20:51:42 -0400 Subject: Fixed Heap Overflow in rm --- src/cmd/rm/rm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/cmd/rm/rm.c') diff --git a/src/cmd/rm/rm.c b/src/cmd/rm/rm.c index ceff76b..86a30b9 100755 --- a/src/cmd/rm/rm.c +++ b/src/cmd/rm/rm.c @@ -77,7 +77,7 @@ int rm(char *path) { return -1; } } else if (S_ISDIR(sbuf.st_mode)) { - warnc(EISDIR, "%s", path); + fprintf(stderr, "rm: %s: %s\n", path, strerror(EISDIR)); return -1; } else { if (unlink(path) != 0) { @@ -101,9 +101,10 @@ int removedir(const char * const path) { size_t len = strlen(path) + strlen(name) + 3; char *newpath = (char *)malloc(len); if (newpath == NULL) { + perror("rm"); exit(EXIT_FAILURE); } - strncat(newpath, path, len); + strncpy(newpath, path, len); strncat(newpath, "/", (len -= strlen(path))); strncat(newpath, name, --len); status = rm(newpath); -- cgit v1.2.3