On Wednesday 30 October 2013 09:58:36 Daniel Stenberg wrote: > On Wed, 30 Oct 2013, Steve Holme wrote: > > I've just pushed commit e17c1b25bc33eb. > > > > I will an eye out on the auto builds to see if anything is flagged but > > any comments or feedback is much appreciated. > > It immediately made test 67 fail for me. It seems our NTLM code is passing > in the basee64 string _with_ the trailing CRLF at the end (sent to the > Curl_ntlm_decode_type2_message() function) so the length isn't an even 4 > bytes. In the test case the string is in fact 218 bytes as the last two > aren't part of the base64...
The following patch fixes the problem for me. Kamil
From f3c19677c237a8f7857cff8d8673227ea49ebebb Mon Sep 17 00:00:00 2001 From: Kamil Dudka <[email protected]> Date: Wed, 30 Oct 2013 16:04:24 +0100 Subject: [PATCH] base64: do not fail on trailing new line character This fixes numerous failing test cases since e17c1b25. --- lib/base64.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/lib/base64.c b/lib/base64.c index 93b8be2..f329f06 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -90,17 +90,22 @@ CURLcode Curl_base64_decode(const char *src, unsigned char lastQuantum[3]; size_t rawlen = 0; unsigned char *newstr; + unsigned char c; *outptr = NULL; *outlen = 0; srcLen = strlen(src); + if(srcLen && (src[srcLen - 1] == '\n')) + /* the string ends with a new line character, which we ignore */ + --srcLen; + /* Check the length of the input string is valid */ if(!srcLen || srcLen % 4) return CURLE_BAD_CONTENT_ENCODING; /* Find the position of any = padding characters */ - while((src[length] != '=') && src[length]) + while((c = src[length]) && (c != '=') && (c != '\n')) length++; /* A maximum of two = padding characters is allowed */ -- 1.7.1
------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.html
