aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2015-02-03 20:59:54 +0100
committerDaniel Stenberg <daniel@haxx.se>2015-02-03 21:03:11 +0100
commit83bb07027db631b880acaf2240cc2cb2b73cf1bc (patch)
tree89ddbf9a4de9db13254723e9bcddadbf32bc910d
parent6b68aa989c9d5f6c031e992f44e5ad792ab48994 (diff)
unit1600: unit test for Curl_ntlm_core_mk_nt_hash
-rw-r--r--lib/curl_ntlm_core.c1
-rw-r--r--tests/data/Makefile.inc2
-rw-r--r--tests/libtest/first.c16
-rw-r--r--tests/libtest/test.h4
-rw-r--r--tests/unit/curlcheck.h14
-rw-r--r--tests/unit/unit1600.c15
6 files changed, 42 insertions, 10 deletions
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index 1bdc82312..81575156f 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -510,6 +510,7 @@ static void ascii_uppercase_to_unicode_le(unsigned char *dest,
/*
* Set up nt hashed passwords
+ * @unittest: 1600
*/
CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
const char *password,
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 940182baa..15b583ecf 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -155,6 +155,8 @@ test1520 \
\
test1525 test1526 test1527 test1528 test1529 \
\
+test1600 \
+\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 \
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index 5851faf62..0ead39d67 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -111,6 +111,20 @@ static void memory_tracking_init(void)
# define memory_tracking_init() Curl_nop_stmt
#endif
+/* returns a hexdump in a static memory area */
+char *hexdump(unsigned char *buffer, size_t len)
+{
+ static char dump[200*3+1];
+ char *p = dump;
+ size_t i;
+ if(len > 200)
+ return NULL;
+ for(i=0; i<len; i++, p += 3)
+ snprintf(p, 4, "%02x ", buffer[i]);
+ return dump;
+}
+
+
int main(int argc, char **argv)
{
char *URL;
diff --git a/tests/libtest/test.h b/tests/libtest/test.h
index 4186c4f26..fb95996aa 100644
--- a/tests/libtest/test.h
+++ b/tests/libtest/test.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -63,6 +63,8 @@ extern void wait_ms(int ms); /* wait this many milliseconds */
extern int test(char *URL); /* the actual test function provided by each
individual libXXX.c file */
+extern char *hexdump(unsigned char *buffer, size_t len);
+
#ifdef UNITTESTS
extern int unitfail;
#endif
diff --git a/tests/unit/curlcheck.h b/tests/unit/curlcheck.h
index 96203e075..2e3746bdc 100644
--- a/tests/unit/curlcheck.h
+++ b/tests/unit/curlcheck.h
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -36,11 +36,13 @@
unitfail++; \
}
-#define verify_memory(dynamic, check, len) \
- if(dynamic && memcmp(dynamic, check, len)) { \
- fprintf(stderr, "%s:%d The dynamic string didn't match '%s'\n", \
- __FILE__, __LINE__, check); \
- unitfail++; \
+#define verify_memory(dynamic, check, len) \
+ if(dynamic && memcmp(dynamic, check, len)) { \
+ fprintf(stderr, "%s:%d Memory buffer mismatch size %d. '%s' is not\n", \
+ __FILE__, __LINE__, len, hexdump((unsigned char *)check, len)); \
+ fprintf(stderr, "%s:%d the same as '%s'\n", \
+ __FILE__, __LINE__, hexdump((unsigned char *)dynamic, len)); \
+ unitfail++; \
}
/* fail() is for when the test case figured out by itself that a check
diff --git a/tests/unit/unit1600.c b/tests/unit/unit1600.c
index 3cc0ebd8e..6e14d20ef 100644
--- a/tests/unit/unit1600.c
+++ b/tests/unit/unit1600.c
@@ -44,7 +44,18 @@ UNITTEST_START
Curl_ntlm_core_mk_nt_hash(easy, "1", output);
verify_memory(testp,
- "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 21);
+ "\x69\x94\x3c\x5e\x63\xb4\xd2\xc1\x04\xdb"
+ "\xbc\xc1\x51\x38\xb7\x2b\x00\x00\x00\x00\x00", 21);
+
+ Curl_ntlm_core_mk_nt_hash(easy, "hello-you-fool", output);
+
+ verify_memory(testp,
+ "\x39\xaf\x87\xa6\x75\x0a\x7a\x00\xba\xa0"
+ "\xd3\x4f\x04\x9e\xc1\xd0\x00\x00\x00\x00\x00", 21);
+
+ Curl_ntlm_core_mk_nt_hash(easy, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
+
+ verify_memory(testp,
+ "\x36\x9d\xae\x06\x84\x7e\xe1\xc1\x4a\x94\x39\xea\x6f\x44\x8c\x65\x00\x00\x00\x00\x00", 21);
UNITTEST_STOP