diff --git a/src/sbbs3/sftp.cpp b/src/sbbs3/sftp.cpp
index a3a3934ff0fafd0c194605ba4828f3a6b2f1664a..04529b1b978144521c1435c30fb0c0744dc0cdb5 100644
--- a/src/sbbs3/sftp.cpp
+++ b/src/sbbs3/sftp.cpp
@@ -731,13 +731,10 @@ sftp_resolve_path(char *target, const char *path, size_t size)
 			else if(*(out+1)=='.' && *(out+2)=='.' && (*(out+3)=='/' || *(out+3)==0))  {
 				*out=0;
 				p=strrchr(target,'/');
-				if(p==NULL) {
-					if (target_alloced)
-						free(target);
-					return nullptr;
+				if (p!=NULL) {
+					memmove(p,out+3,strlen(out+3)+1);
+					out=p;
 				}
-				memmove(p,out+3,strlen(out+3)+1);
-				out=p;
 			}
 			else  {
 				out++;