>bin\Zilf.exe doomv109.zil
ZILF 0.9 built 8/11/2019 4:30:42 AM
[error MDL0128] doomv109.zil:1: ROOM: arg 1: expected ATOM
[error MDL0113] doomv109.zil:2: unrecognized value in DECL pattern: -48
[error MDL0215] doomv109.zil:2: GVAL: atom 'CEILING' has no global value
[error MDL0113] doomv109.zil:2: unrecognized value in DECL pattern: 80
[error MDL0113] doomv109.zil:3: unrecognized atom in DECL pattern: Unknown
[error MDL0113] doomv109.zil:4: unrecognized atom in DECL pattern: Unknown
[error MDL0113] doomv109.zil:5: unrecognized atom in DECL pattern: -
[error MDL0113] doomv109.zil:17: unrecognized atom in DECL pattern: ROOM
[error MDL0113] doomv109.zil:20: unrecognized value in DECL pattern: -48
[error MDL0215] doomv109.zil:20: GVAL: atom 'CEILING' has no global value
[error MDL0113] doomv109.zil:20: unrecognized value in DECL pattern: 80
[error MDL0113] doomv109.zil:21: unrecognized atom in DECL pattern: Unknown
[error MDL0113] doomv109.zil:22: unrecognized atom in DECL pattern: Unknown
[error MDL0113] doomv109.zil:23: unrecognized atom in DECL pattern: -
[error MDL0113] doomv109.zil:47: unrecognized atom in DECL pattern: -
[error MDL0128] doomv109.zil:48: GVAL: arg 1: expected ATOM
[error MDL0128] doomv109.zil:50: ROOM: arg 1: expected ATOM
[error MDL0113] doomv109.zil:51: unrecognized value in DECL pattern: 0
[error MDL0215] doomv109.zil:51: GVAL: atom 'CEILING' has no global value
>bin\Zilf.exe freedoom1.zil
ZILF 0.9 built 8/11/2019 4:30:42 AM
[error MDL0128] freedoom1.zil:1: ROOM: arg 1: expected ATOM
[error MDL0113] freedoom1.zil:2: unrecognized value in DECL pattern: 0
[error MDL0215] freedoom1.zil:2: GVAL: atom 'CEILING' has no global value
[error MDL0113] freedoom1.zil:2: unrecognized value in DECL pattern: 104
[error MDL0113] freedoom1.zil:3: unrecognized atom in DECL pattern: Unknown
[error MDL0113] freedoom1.zil:4: unrecognized atom in DECL pattern: Unknown
[error MDL0113] freedoom1.zil:5: unrecognized atom in DECL pattern: -
[error MDL0113] freedoom1.zil:7: unrecognized atom in DECL pattern: STARGR1
[error MDL0215] <internally created FORM>: GVAL: atom 'Left' has no global value
[error MDL0113] freedoom1.zil:8: unrecognized atom in DECL pattern: SKSNAKE2
[error MDL0113] freedoom1.zil:9: unrecognized atom in DECL pattern: SKSNAKE2
[error MDL0113] freedoom1.zil:10: unrecognized atom in DECL pattern: SKSNAKE2
[error MDL0113] freedoom1.zil:11: unrecognized atom in DECL pattern: SKSNAKE2
[error MDL0113] freedoom1.zil:12: unrecognized atom in DECL pattern: ROOM
[error MDL0113] freedoom1.zil:15: unrecognized value in DECL pattern: 0
[error MDL0215] freedoom1.zil:15: GVAL: atom 'CEILING' has no global value
Two wrongs don't make a right. The fact that "a".hash == "\0a" hash is an issue with the hash function. nothing else. Seeding the hash function so it is unique for each process does not solve the issue.
Recent versions of Ruby also use a much better hash function. Java's hash function on strings has a slightly less trivial process for generating collisions, but it's still very easy to generate enough of them to pose a DoS risk.
Edit: actually, Java's String.hashCode() has exactly the same problem — prepending null chars doesn't change the hash code. And because the hash function is actually part of the Java standard library docs, it will probably never be changed (unlike Ruby's).
How in the world would does the described issue with hash codes on distributed systems fix the issue of hash collisions in a request? Usually the attacker would send multiple parameters for "a","\0a","\00a" in a single request anyhow.
Sorry, I think I misunderstood your first post then. By "the issue", I thought you were referring to the issue that the randomized-hash set out to solve (DOS attacks/pathological performance due to predictable hashes)