fix read(byte[] b, int off, int len)  method in FileInStream.java.

Method read(byte[] b, int off, int len) returns 0 when there is nothing left to read. It should return -1.
When "mCurrentPosition" is equal to "FILE_LENGTH" the while loop is skipped and "tLen" has the same value as "len", and this means that the return value will be always 0 when there is nothing left to read. This will cause an infinite loop.
The issue exists in all branches. I've made the fix and pull request here because I'm working with the release version for 5.0, but all the branches should get the fix.
There is a bug here.  When nothing is read, but you are not at EOF, then you should return 0.

```scala
scala> import java.io._
import java.io._

scala> val file = new File("/tmp/tunnelblick-downscript-needs-to-be-run.txt")
file: java.io.File = /tmp/tunnelblick-downscript-needs-to-be-run.txt

scala> val is = new FileInputStream(file)
is: java.io.FileInputStream = java.io.FileInputStream@6414b16d

scala> val data = Array.ofDim[Byte](10)
data: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

scala> is.read(data, 0, 0)
res0: Int = 0
```

If I do the same for this code, ill get back a `-1`.  In order to return `-1`, the check needs to be at the start of the method.  If your current pos is >= length, then you return -1.