diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 2f18b2e298b4f68dea037a9bc25ec1a8a20429e6..b17f72994e1cff68636bb3b8e5bc8c2dc562cd17 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -620,7 +620,7 @@ static void send_thread(void* arg) #ifdef _WIN32 GetShortPathName(xfer.filename,fname,sizeof(fname)); #else - strcpy(xfer.filename,fname); + strcpy(fname,xfer.filename); #endif padfname(getfname(fname),f.name); strupr(f.name); @@ -899,6 +899,11 @@ static void filexfer(SOCKADDR_IN* addr, SOCKET ctrl_sock, SOCKET pasv_sock, SOCK ,ctrl_sock,*data_sock,inet_ntoa(addr->sin_addr),ntohs(addr->sin_port)); } else { /* PASV */ + + if(startup->options&FTP_OPT_DEBUG_DATA) + lprintf("%04d PASV DATA socket %d listening on %s port %d" + ,ctrl_sock,pasv_sock,inet_ntoa(addr->sin_addr),ntohs(addr->sin_port)); + addr_len=sizeof(SOCKADDR_IN); if((*data_sock=accept(pasv_sock,(struct sockaddr*)addr,&addr_len))==INVALID_SOCKET) { lprintf("%04d !PASV DATA ERROR %d accepting connection on socket %d" @@ -2722,7 +2727,9 @@ static void ctrl_thread(void* arg) continue; } sprintf(fname,"%s%s",scfg.dir[dir]->path,p); - if(fexist(fname)) { + if(fexist(fname) || + (startup->options&FTP_OPT_INDEX_FILE + && !stricmp(p,startup->index_file_name))) { lprintf("%04d !%s attempted to overwrite existing file: %s" ,sock,user.alias,fname); sockprintf(sock,"553 File already exists.");