diff --git a/shellinabox/shellinaboxd.c b/shellinabox/shellinaboxd.c index de20769..f508c66 100644 --- a/shellinabox/shellinaboxd.c +++ b/shellinabox/shellinaboxd.c @@ -613,15 +613,17 @@ static int shellInABoxHttpHandler(HttpConnection *http, void *arg, const HashMap *headers = httpGetHeaders(http); const char *contentType = getFromHashMap(headers, "content-type"); - // Normalize the path info, present the final path element + // Normalize the path info const char *pathInfo = urlGetPathInfo(url); - int pathInfoLength = 0; - pathInfo = rindex (pathInfo, '/'); - if (pathInfo) - ++pathInfo; - else - pathInfo = ""; /* Cheap way to get an empty string */ - pathInfoLength = strlen (pathInfo); + while (*pathInfo == '/') { + pathInfo++; + } + const char *endPathInfo; + for (endPathInfo = pathInfo; + *endPathInfo && *endPathInfo != '/'; + endPathInfo++) { + } + int pathInfoLength = endPathInfo - pathInfo; if (!pathInfoLength || (pathInfoLength == 5 && !memcmp(pathInfo, "plain", 5)) ||