From 257f8ee0d0a4eeba24e638c74a2ce475c518f3f6 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 6 Jun 2019 23:28:03 -0700 Subject: [PATCH] Fix for top level '/' dir edge cases --- bb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bb.c b/bb.c index a9059a9..5a38693 100644 --- a/bb.c +++ b/bb.c @@ -744,7 +744,7 @@ entry_t* load_entry(bb_t *bb, const char *path) strcpy(pbuf, bb->path); strcat(pbuf, path); } - if (pbuf[strlen(pbuf)-1] == '/') + if (pbuf[strlen(pbuf)-1] == '/' && pbuf[1]) pbuf[strlen(pbuf)-1] = '\0'; // Check for pre-existing: @@ -768,9 +768,13 @@ entry_t* load_entry(bb_t *bb, const char *path) char *end = stpcpy(entry->fullname, pbuf); if (linkpathlen >= 0) entry->linkname = strcpy(end + 1, linkbuf); - entry->name = strrchr(entry->fullname, '/'); - if (!entry->name) err("No slash found in '%s'", entry->fullname); - ++entry->name; + if (strcmp(entry->fullname, "/") == 0) { + entry->name = entry->fullname; + } else { + entry->name = strrchr(entry->fullname, '/'); + if (!entry->name) err("No slash found in '%s' from '%s'", entry->fullname, path); + ++entry->name; + } if (S_ISLNK(filestat.st_mode)) entry->linkedmode = linkedstat.st_mode; entry->info = filestat;