Ticket #274 (new defect)
Opened 5 months ago
Symlink containing Target with space breaks MLST unserialize
| Reported by: | raw | Owned by: | zubov |
|---|---|---|---|
| Priority: | normal | Milestone: | 2.0.x-plus |
| Component: | VirtualFileSystem | Version: | plus-2.0-stable |
| Severity: | normal | Keywords: | symlinks createlinks space |
| Cc: |
Description
Starting my site failed with:
ERROR 09 Mar 2010 15:12:28 [WrapperSimpleAppMain] org.drftpd.master.ConnectionManager - java.lang.IllegalArgumentException: Illegal filename - /INC/Dreams/S03/Alabama.Dreams.S03E10.Der.Aussenseiter.GERMAN.WS.dTV.XviD-FKKTV;size=0;modify=20100306174532.664;unix.owner=nobody;unix.group=drftpd; [SERIEN_ARCHIV]-Alabama.Dreams.S03E10.Der.Aussenseiter.GERMAN.WS.dTV.XviD-FKKTV at org.drftpd.remotefile.LinkedRemoteFile.<init>(LinkedRemoteFile.java:142) at org.drftpd.remotefile.LinkedRemoteFile.putFile(LinkedRemoteFile.java:1234) at org.drftpd.remotefile.LinkedRemoteFile.putFile(LinkedRemoteFile.java:1169) at org.drftpd.remotefile.MLSTSerialize.unserialize(MLSTSerialize.java:245) at org.drftpd.remotefile.MLSTSerialize.unserialize(MLSTSerialize.java:274) at org.drftpd.remotefile.MLSTSerialize.loadMLSTFileDatabase(MLSTSerialize.java:285) at org.drftpd.GlobalContext.loadRSlavesAndRoot(GlobalContext.java:258) at org.drftpd.GlobalContext.<init>(GlobalContext.java:104) at org.drftpd.master.ConnectionManager.<init>(ConnectionManager.java:70) at org.drftpd.master.ConnectionManager.main(ConnectionManager.java:127) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:238) at java.lang.Thread.run(Thread.java:636)
Cause of the problem was, that the symlink target contained a space, files.mlst line looked like that:
type=OS.unix=slink:/_ARCHIV/SERIEN/A/Alabama Dreams/S03/Alabama.Dreams.S03E10.Der.Aussenseiter.GERMAN.WS.dTV.XviD-FKKTV;size=0;modify=20100306174532.664;unix.owner=nobody;unix.group=drftpd; [SERIEN_ARCHIV]-Alabama.Dreams.S03E10.Der.Aussenseiter.GERMAN.WS.dTV.XviD-FKKTV
As i can read in src/org/drftpd/remotefile/MLSTSerialize.java around line 155, the unserialize function explodes the line by ' ' (space) to seperate attributes from Filename. This fails, because the target attribute already contains a space, so that the filename is invalid
The link was created by createlinks mod. Iam not sure if the space needs to be replaced some way.
i have fixed it quick&dirty like that:
Index: src/org/drftpd/remotefile/MLSTSerialize.java
===================================================================
--- src/org/drftpd/remotefile/MLSTSerialize.java (revision 2019)
+++ src/org/drftpd/remotefile/MLSTSerialize.java (working copy)
@@ -149,7 +149,13 @@
return;
}
- int pos = line.indexOf(' ');
+ int testsize = line.indexOf(";size=0");
+
+ int pos;
+ if(testsize!=-1)
+ pos = line.indexOf(' ',testsize);
+ else
+ pos = line.indexOf(' ');
if (pos == -1) {
throw new CorruptFileListException("\"" + line +
Note: See
TracTickets for help on using
tickets.
