Annotation of embedaddon/curl/tests/unit/unit1302.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: *
! 10: * This software is licensed as described in the file COPYING, which
! 11: * you should have received as part of this distribution. The terms
! 12: * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: *
! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: * copies of the Software, and permit persons to whom the Software is
! 16: * furnished to do so, under the terms of the COPYING file.
! 17: *
! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: * KIND, either express or implied.
! 20: *
! 21: ***************************************************************************/
! 22: #include "curlcheck.h"
! 23:
! 24: #include "urldata.h"
! 25: #include "url.h" /* for Curl_safefree */
! 26: #include "curl_base64.h"
! 27: #include "memdebug.h" /* LAST include file */
! 28:
! 29: static struct Curl_easy *data;
! 30:
! 31: static CURLcode unit_setup(void)
! 32: {
! 33: int res = CURLE_OK;
! 34:
! 35: global_init(CURL_GLOBAL_ALL);
! 36: data = curl_easy_init();
! 37: if(!data)
! 38: return CURLE_OUT_OF_MEMORY;
! 39: return res;
! 40: }
! 41:
! 42: static void unit_stop(void)
! 43: {
! 44: curl_easy_cleanup(data);
! 45: curl_global_cleanup();
! 46: }
! 47:
! 48: UNITTEST_START
! 49:
! 50: char *output;
! 51: unsigned char *decoded;
! 52: size_t size = 0;
! 53: unsigned char anychar = 'x';
! 54: CURLcode rc;
! 55:
! 56: rc = Curl_base64_encode(data, "i", 1, &output, &size);
! 57: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 58: fail_unless(size == 4, "size should be 4");
! 59: verify_memory(output, "aQ==", 4);
! 60: Curl_safefree(output);
! 61:
! 62: rc = Curl_base64_encode(data, "ii", 2, &output, &size);
! 63: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 64: fail_unless(size == 4, "size should be 4");
! 65: verify_memory(output, "aWk=", 4);
! 66: Curl_safefree(output);
! 67:
! 68: rc = Curl_base64_encode(data, "iii", 3, &output, &size);
! 69: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 70: fail_unless(size == 4, "size should be 4");
! 71: verify_memory(output, "aWlp", 4);
! 72: Curl_safefree(output);
! 73:
! 74: rc = Curl_base64_encode(data, "iiii", 4, &output, &size);
! 75: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 76: fail_unless(size == 8, "size should be 8");
! 77: verify_memory(output, "aWlpaQ==", 8);
! 78: Curl_safefree(output);
! 79:
! 80: rc = Curl_base64_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
! 81: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 82: fail_unless(size == 8, "size should be 8");
! 83: verify_memory(output, "/wH+Ag==", 8);
! 84: Curl_safefree(output);
! 85:
! 86: rc = Curl_base64url_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
! 87: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 88: fail_unless(size == 8, "size should be 8");
! 89: verify_memory(output, "_wH-Ag==", 8);
! 90: Curl_safefree(output);
! 91:
! 92: rc = Curl_base64url_encode(data, "iiii", 4, &output, &size);
! 93: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 94: fail_unless(size == 8, "size should be 8");
! 95: verify_memory(output, "aWlpaQ==", 8);
! 96: Curl_safefree(output);
! 97:
! 98: /* 0 length makes it do strlen() */
! 99: rc = Curl_base64_encode(data, "iiii", 0, &output, &size);
! 100: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 101: fail_unless(size == 8, "size should be 8");
! 102: verify_memory(output, "aWlpaQ==", 8);
! 103: Curl_safefree(output);
! 104:
! 105: rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
! 106: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 107: fail_unless(size == 4, "size should be 4");
! 108: verify_memory(decoded, "iiii", 4);
! 109: Curl_safefree(decoded);
! 110:
! 111: rc = Curl_base64_decode("aWlp", &decoded, &size);
! 112: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 113: fail_unless(size == 3, "size should be 3");
! 114: verify_memory(decoded, "iii", 3);
! 115: Curl_safefree(decoded);
! 116:
! 117: rc = Curl_base64_decode("aWk=", &decoded, &size);
! 118: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 119: fail_unless(size == 2, "size should be 2");
! 120: verify_memory(decoded, "ii", 2);
! 121: Curl_safefree(decoded);
! 122:
! 123: rc = Curl_base64_decode("aQ==", &decoded, &size);
! 124: fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
! 125: fail_unless(size == 1, "size should be 1");
! 126: verify_memory(decoded, "i", 2);
! 127: Curl_safefree(decoded);
! 128:
! 129: /* This is illegal input as the data is too short */
! 130: size = 1; /* not zero */
! 131: decoded = &anychar; /* not NULL */
! 132: rc = Curl_base64_decode("aQ", &decoded, &size);
! 133: fail_unless(rc == CURLE_BAD_CONTENT_ENCODING,
! 134: "return code should be CURLE_BAD_CONTENT_ENCODING");
! 135: fail_unless(size == 0, "size should be 0");
! 136: fail_if(decoded, "returned pointer should be NULL");
! 137:
! 138: /* This is illegal input as it contains three padding characters */
! 139: size = 1; /* not zero */
! 140: decoded = &anychar; /* not NULL */
! 141: rc = Curl_base64_decode("a===", &decoded, &size);
! 142: fail_unless(rc == CURLE_BAD_CONTENT_ENCODING,
! 143: "return code should be CURLE_BAD_CONTENT_ENCODING");
! 144: fail_unless(size == 0, "size should be 0");
! 145: fail_if(decoded, "returned pointer should be NULL");
! 146:
! 147: /* This is illegal input as it contains a padding character mid input */
! 148: size = 1; /* not zero */
! 149: decoded = &anychar; /* not NULL */
! 150: rc = Curl_base64_decode("a=Q=", &decoded, &size);
! 151: fail_unless(rc == CURLE_BAD_CONTENT_ENCODING,
! 152: "return code should be CURLE_BAD_CONTENT_ENCODING");
! 153: fail_unless(size == 0, "size should be 0");
! 154: fail_if(decoded, "returned pointer should be NULL");
! 155:
! 156: /* This is garbage input as it contains an illegal base64 character */
! 157: size = 1; /* not zero */
! 158: decoded = &anychar; /* not NULL */
! 159: rc = Curl_base64_decode("a\x1f==", &decoded, &size);
! 160: fail_unless(rc == CURLE_BAD_CONTENT_ENCODING,
! 161: "return code should be CURLE_BAD_CONTENT_ENCODING");
! 162: fail_unless(size == 0, "size should be 0");
! 163: fail_if(decoded, "returned pointer should be NULL");
! 164:
! 165: UNITTEST_STOP
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>