diff --git a/src/internal.c b/src/internal.c index 098d4c6a..0c2a5eb7 100644 --- a/src/internal.c +++ b/src/internal.c @@ -19885,8 +19885,9 @@ int wolfSSH_CleanPath(WOLFSSH* ssh, char* in, int inSz) if (path[i] == WS_DELIM) { int z; - /* if next two chars are .. then delete */ - if (path[i+1] == '.' && path[i+2] == '.') { + /* delete only a real ".." segment, not "..name" */ + if (path[i+1] == '.' && path[i+2] == '.' && + (path[i+3] == WS_DELIM || path[i+3] == '\0')) { enIdx = i + 3; /* start at one char before / and retrace path */