IOUtils#skipFully contains this code:
The Java documentation is silent about what exactly skip is supposed to do in the event of EOF. However, I looked at both InputStream#skip and ByteArrayInputStream#skip, and they both simply return 0 on EOF (no exception). So it seems safe to assume that this is the standard Java way of doing things in an InputStream.
Currently IOUtils#skipFully will loop forever if you ask it to skip past EOF!