diff --git a/src/browser.c b/src/browser.c index 4de69a4e5d3c8600733421ab559aa20924dc7f5e..00310e281c41bfc30b91dbba2e20b4d92cb95bc8 100644 --- a/src/browser.c +++ b/src/browser.c @@ -246,12 +246,13 @@ char *do_browser(char *path, DIR *dir) new_path_len = strlen(new_path) + 1; if (new_path[0] != '/') { - new_path = charealloc(new_path, strlen(path) + - strlen(answer) + 1); + new_path = charealloc(new_path, new_path_len + + strlen(answer)); sprintf(new_path, "%s%s", path, answer); } - if (new_path[new_path_len - 1] == '/') + if (new_path_len > 1 && + new_path[new_path_len - 1] == '/') null_at(&new_path, new_path_len - 1); /* We can't move up from "/". */