diff -uNr ftpd1.2.5-orig//ftpd.tcl ftpd1.2.5-bug3312860/ftpd.tcl
--- ftpd1.2.5-orig//ftpd.tcl	2011-06-06 22:59:33.000000000 +0000
+++ ftpd1.2.5-bug3312860/ftpd.tcl	2011-06-23 15:49:45.057732184 +0000
@@ -750,7 +750,7 @@
 proc ::ftpd::command::APPE {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
         lappend cmd $data(user) $path write
@@ -846,7 +846,7 @@
 proc ::ftpd::command::DELE {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
         lappend cmd $data(user) $path write
@@ -952,7 +952,7 @@
 proc ::ftpd::command::MDTM {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[catch {::ftpd::Fs mtime $path $sock} msg]} {
 	puts $sock "500 MDTM Failed: $path $msg"
 	::ftpd::FinishData $sock
@@ -977,7 +977,7 @@
 proc ::ftpd::command::MKD {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
 
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
@@ -1223,7 +1223,7 @@
 proc ::ftpd::command::RETR {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
 
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
@@ -1264,7 +1264,7 @@
 proc ::ftpd::command::RMD {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
 
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
@@ -1299,7 +1299,7 @@
 proc ::ftpd::command::RNFR {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
 
     if {[file exists $path]} {
         if {[::ftpd::hasCallback authFileCmd]} {
@@ -1342,7 +1342,7 @@
         return
     }
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
 
     if {![info exists data(renameFrom)]} {
         puts $sock "503 Bad sequence of commands."
@@ -1385,7 +1385,7 @@
 proc ::ftpd::command::SIZE {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[catch {::ftpd::Fs size $path $sock} msg]} {
 	puts $sock "500 SIZE Failed: $path $msg"
 	::ftpd::FinishData $sock
@@ -1413,7 +1413,7 @@
 proc ::ftpd::command::STOR {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
         lappend cmd $data(user) $path write
@@ -1456,7 +1456,7 @@
 proc ::ftpd::command::STOU {sock filename} {
     upvar #0 ::ftpd::$sock data
 
-    set path [file join $data(cwd) [string trimleft $filename /]]
+    set path [file join $data(cwd) $filename]
     if {[::ftpd::hasCallback authFileCmd]} {
         set cmd $::ftpd::cfg(authFileCmd)
         lappend cmd $data(user) $path write
