diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2015-02-03 20:59:54 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2015-02-03 21:03:11 +0100 | 
| commit | 83bb07027db631b880acaf2240cc2cb2b73cf1bc (patch) | |
| tree | 89ddbf9a4de9db13254723e9bcddadbf32bc910d | |
| parent | 6b68aa989c9d5f6c031e992f44e5ad792ab48994 (diff) | |
unit1600: unit test for Curl_ntlm_core_mk_nt_hash
| -rw-r--r-- | lib/curl_ntlm_core.c | 1 | ||||
| -rw-r--r-- | tests/data/Makefile.inc | 2 | ||||
| -rw-r--r-- | tests/libtest/first.c | 16 | ||||
| -rw-r--r-- | tests/libtest/test.h | 4 | ||||
| -rw-r--r-- | tests/unit/curlcheck.h | 14 | ||||
| -rw-r--r-- | tests/unit/unit1600.c | 15 | 
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  | 
