HTTPCLIENT-1881: Allow truncated NTLM packets to work with this client.

This commit is contained in:
Karl Wright 2017-11-18 06:37:27 -05:00
parent 235348eec6
commit 42359353a2
1 changed files with 3 additions and 4 deletions

View File

@ -270,7 +270,7 @@ final class NTLMEngineImpl implements NTLMEngine {
private static int readULong(final byte[] src, final int index) throws NTLMEngineException { private static int readULong(final byte[] src, final int index) throws NTLMEngineException {
if (src.length < index + 4) { if (src.length < index + 4) {
throw new NTLMEngineException("NTLM authentication - buffer too small for DWORD"); return 0;
} }
return (src[index] & 0xff) | ((src[index + 1] & 0xff) << 8) return (src[index] & 0xff) | ((src[index + 1] & 0xff) << 8)
| ((src[index + 2] & 0xff) << 16) | ((src[index + 3] & 0xff) << 24); | ((src[index + 2] & 0xff) << 16) | ((src[index + 3] & 0xff) << 24);
@ -278,7 +278,7 @@ final class NTLMEngineImpl implements NTLMEngine {
private static int readUShort(final byte[] src, final int index) throws NTLMEngineException { private static int readUShort(final byte[] src, final int index) throws NTLMEngineException {
if (src.length < index + 2) { if (src.length < index + 2) {
throw new NTLMEngineException("NTLM authentication - buffer too small for WORD"); return 0;
} }
return (src[index] & 0xff) | ((src[index + 1] & 0xff) << 8); return (src[index] & 0xff) | ((src[index + 1] & 0xff) << 8);
} }
@ -287,8 +287,7 @@ final class NTLMEngineImpl implements NTLMEngine {
final int length = readUShort(src, index); final int length = readUShort(src, index);
final int offset = readULong(src, index + 4); final int offset = readULong(src, index + 4);
if (src.length < offset + length) { if (src.length < offset + length) {
throw new NTLMEngineException( return new byte[length];
"NTLM authentication - buffer too small for data item");
} }
final byte[] buffer = new byte[length]; final byte[] buffer = new byte[length];
System.arraycopy(src, offset, buffer, 0, length); System.arraycopy(src, offset, buffer, 0, length);