113498266Sopenharmony_ci/*************************************************************************** 213498266Sopenharmony_ci * _ _ ____ _ 313498266Sopenharmony_ci * Project ___| | | | _ \| | 413498266Sopenharmony_ci * / __| | | | |_) | | 513498266Sopenharmony_ci * | (__| |_| | _ <| |___ 613498266Sopenharmony_ci * \___|\___/|_| \_\_____| 713498266Sopenharmony_ci * 813498266Sopenharmony_ci * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 913498266Sopenharmony_ci * 1013498266Sopenharmony_ci * This software is licensed as described in the file COPYING, which 1113498266Sopenharmony_ci * you should have received as part of this distribution. The terms 1213498266Sopenharmony_ci * are also available at https://curl.se/docs/copyright.html. 1313498266Sopenharmony_ci * 1413498266Sopenharmony_ci * You may opt to use, copy, modify, merge, publish, distribute and/or sell 1513498266Sopenharmony_ci * copies of the Software, and permit persons to whom the Software is 1613498266Sopenharmony_ci * furnished to do so, under the terms of the COPYING file. 1713498266Sopenharmony_ci * 1813498266Sopenharmony_ci * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 1913498266Sopenharmony_ci * KIND, either express or implied. 2013498266Sopenharmony_ci * 2113498266Sopenharmony_ci * SPDX-License-Identifier: curl 2213498266Sopenharmony_ci * 2313498266Sopenharmony_ci ***************************************************************************/ 2413498266Sopenharmony_ci#include "curlcheck.h" 2513498266Sopenharmony_ci 2613498266Sopenharmony_ci#include "tool_cfgable.h" 2713498266Sopenharmony_ci#include "tool_doswin.h" 2813498266Sopenharmony_ci 2913498266Sopenharmony_ci#include <stdio.h> 3013498266Sopenharmony_ci#include <stdlib.h> 3113498266Sopenharmony_ci#include <string.h> 3213498266Sopenharmony_ci 3313498266Sopenharmony_ci#include "memdebug.h" /* LAST include file */ 3413498266Sopenharmony_ci 3513498266Sopenharmony_cistatic CURLcode unit_setup(void) 3613498266Sopenharmony_ci{ 3713498266Sopenharmony_ci return CURLE_OK; 3813498266Sopenharmony_ci} 3913498266Sopenharmony_ci 4013498266Sopenharmony_cistatic void unit_stop(void) 4113498266Sopenharmony_ci{ 4213498266Sopenharmony_ci 4313498266Sopenharmony_ci} 4413498266Sopenharmony_ci 4513498266Sopenharmony_ci#if defined(_WIN32) || defined(MSDOS) 4613498266Sopenharmony_ci 4713498266Sopenharmony_cistatic char *getflagstr(int flags) 4813498266Sopenharmony_ci{ 4913498266Sopenharmony_ci char *buf = malloc(256); 5013498266Sopenharmony_ci if(buf) { 5113498266Sopenharmony_ci msnprintf(buf, 256, "%s,%s,%s,%s", 5213498266Sopenharmony_ci ((flags & SANITIZE_ALLOW_COLONS) ? 5313498266Sopenharmony_ci "SANITIZE_ALLOW_COLONS" : ""), 5413498266Sopenharmony_ci ((flags & SANITIZE_ALLOW_PATH) ? 5513498266Sopenharmony_ci "SANITIZE_ALLOW_PATH" : ""), 5613498266Sopenharmony_ci ((flags & SANITIZE_ALLOW_RESERVED) ? 5713498266Sopenharmony_ci "SANITIZE_ALLOW_RESERVED" : ""), 5813498266Sopenharmony_ci ((flags & SANITIZE_ALLOW_TRUNCATE) ? 5913498266Sopenharmony_ci "SANITIZE_ALLOW_TRUNCATE" : "")); 6013498266Sopenharmony_ci } 6113498266Sopenharmony_ci return buf; 6213498266Sopenharmony_ci} 6313498266Sopenharmony_ci 6413498266Sopenharmony_cistatic char *getcurlcodestr(int cc) 6513498266Sopenharmony_ci{ 6613498266Sopenharmony_ci char *buf = malloc(256); 6713498266Sopenharmony_ci if(buf) { 6813498266Sopenharmony_ci msnprintf(buf, 256, "%s (%d)", 6913498266Sopenharmony_ci (cc == SANITIZE_ERR_OK ? "SANITIZE_ERR_OK" : 7013498266Sopenharmony_ci cc == SANITIZE_ERR_BAD_ARGUMENT ? "SANITIZE_ERR_BAD_ARGUMENT" : 7113498266Sopenharmony_ci cc == SANITIZE_ERR_INVALID_PATH ? "SANITIZE_ERR_INVALID_PATH" : 7213498266Sopenharmony_ci cc == SANITIZE_ERR_OUT_OF_MEMORY ? "SANITIZE_ERR_OUT_OF_MEMORY": 7313498266Sopenharmony_ci "unexpected error code - add name"), 7413498266Sopenharmony_ci cc); 7513498266Sopenharmony_ci } 7613498266Sopenharmony_ci return buf; 7713498266Sopenharmony_ci} 7813498266Sopenharmony_ci 7913498266Sopenharmony_cistruct data { 8013498266Sopenharmony_ci const char *input; 8113498266Sopenharmony_ci int flags; 8213498266Sopenharmony_ci const char *expected_output; 8313498266Sopenharmony_ci SANITIZEcode expected_result; 8413498266Sopenharmony_ci}; 8513498266Sopenharmony_ci 8613498266Sopenharmony_ciUNITTEST_START 8713498266Sopenharmony_ci{ /* START sanitize_file_name */ 8813498266Sopenharmony_ci struct data data[] = { 8913498266Sopenharmony_ci { "", 0, 9013498266Sopenharmony_ci "", SANITIZE_ERR_OK 9113498266Sopenharmony_ci }, 9213498266Sopenharmony_ci { "normal filename", 0, 9313498266Sopenharmony_ci "normal filename", SANITIZE_ERR_OK 9413498266Sopenharmony_ci }, 9513498266Sopenharmony_ci { "control\tchar", 0, 9613498266Sopenharmony_ci "control_char", SANITIZE_ERR_OK 9713498266Sopenharmony_ci }, 9813498266Sopenharmony_ci { "banned*char", 0, 9913498266Sopenharmony_ci "banned_char", SANITIZE_ERR_OK 10013498266Sopenharmony_ci }, 10113498266Sopenharmony_ci { "f:foo", 0, 10213498266Sopenharmony_ci "f_foo", SANITIZE_ERR_OK 10313498266Sopenharmony_ci }, 10413498266Sopenharmony_ci { "f:foo", SANITIZE_ALLOW_COLONS, 10513498266Sopenharmony_ci "f:foo", SANITIZE_ERR_OK 10613498266Sopenharmony_ci }, 10713498266Sopenharmony_ci { "f:foo", SANITIZE_ALLOW_PATH, 10813498266Sopenharmony_ci "f:foo", SANITIZE_ERR_OK 10913498266Sopenharmony_ci }, 11013498266Sopenharmony_ci { "f:\\foo", 0, 11113498266Sopenharmony_ci "f__foo", SANITIZE_ERR_OK 11213498266Sopenharmony_ci }, 11313498266Sopenharmony_ci { "f:\\foo", SANITIZE_ALLOW_PATH, 11413498266Sopenharmony_ci "f:\\foo", SANITIZE_ERR_OK 11513498266Sopenharmony_ci }, 11613498266Sopenharmony_ci { "f:/foo", 0, 11713498266Sopenharmony_ci "f__foo", SANITIZE_ERR_OK 11813498266Sopenharmony_ci }, 11913498266Sopenharmony_ci { "f:/foo", SANITIZE_ALLOW_PATH, 12013498266Sopenharmony_ci "f:/foo", SANITIZE_ERR_OK 12113498266Sopenharmony_ci }, 12213498266Sopenharmony_ci#ifndef MSDOS 12313498266Sopenharmony_ci { "\\\\?\\C:\\foo", SANITIZE_ALLOW_PATH, 12413498266Sopenharmony_ci "\\\\?\\C:\\foo", SANITIZE_ERR_OK 12513498266Sopenharmony_ci }, 12613498266Sopenharmony_ci { "\\\\?\\C:\\foo", 0, 12713498266Sopenharmony_ci "____C__foo", SANITIZE_ERR_OK 12813498266Sopenharmony_ci }, 12913498266Sopenharmony_ci#endif 13013498266Sopenharmony_ci { "foo:bar", 0, 13113498266Sopenharmony_ci "foo_bar", SANITIZE_ERR_OK 13213498266Sopenharmony_ci }, 13313498266Sopenharmony_ci { "foo|<>/bar\\\":?*baz", 0, 13413498266Sopenharmony_ci "foo____bar_____baz", SANITIZE_ERR_OK 13513498266Sopenharmony_ci }, 13613498266Sopenharmony_ci { "f:foo::$DATA", 0, 13713498266Sopenharmony_ci "f_foo__$DATA", SANITIZE_ERR_OK 13813498266Sopenharmony_ci }, 13913498266Sopenharmony_ci { "con . air", 0, 14013498266Sopenharmony_ci "con _ air", SANITIZE_ERR_OK 14113498266Sopenharmony_ci }, 14213498266Sopenharmony_ci { "con.air", 0, 14313498266Sopenharmony_ci "con_air", SANITIZE_ERR_OK 14413498266Sopenharmony_ci }, 14513498266Sopenharmony_ci { "con:/x", 0, 14613498266Sopenharmony_ci "con__x", SANITIZE_ERR_OK 14713498266Sopenharmony_ci }, 14813498266Sopenharmony_ci { "file . . . . .. .", 0, 14913498266Sopenharmony_ci "file", SANITIZE_ERR_OK 15013498266Sopenharmony_ci }, 15113498266Sopenharmony_ci { "foo . . ? . . ", 0, 15213498266Sopenharmony_ci "foo . . _", SANITIZE_ERR_OK 15313498266Sopenharmony_ci }, 15413498266Sopenharmony_ci { "com1", 0, 15513498266Sopenharmony_ci "_com1", SANITIZE_ERR_OK 15613498266Sopenharmony_ci }, 15713498266Sopenharmony_ci { "com1", SANITIZE_ALLOW_RESERVED, 15813498266Sopenharmony_ci "com1", SANITIZE_ERR_OK 15913498266Sopenharmony_ci }, 16013498266Sopenharmony_ci { "f:\\com1", 0, 16113498266Sopenharmony_ci "f__com1", SANITIZE_ERR_OK 16213498266Sopenharmony_ci }, 16313498266Sopenharmony_ci { "f:\\com1", SANITIZE_ALLOW_PATH, 16413498266Sopenharmony_ci "f:\\_com1", SANITIZE_ERR_OK 16513498266Sopenharmony_ci }, 16613498266Sopenharmony_ci { "f:\\com1", SANITIZE_ALLOW_RESERVED, 16713498266Sopenharmony_ci "f__com1", SANITIZE_ERR_OK 16813498266Sopenharmony_ci }, 16913498266Sopenharmony_ci { "f:\\com1", SANITIZE_ALLOW_RESERVED | SANITIZE_ALLOW_COLONS, 17013498266Sopenharmony_ci "f:_com1", SANITIZE_ERR_OK 17113498266Sopenharmony_ci }, 17213498266Sopenharmony_ci { "f:\\com1", SANITIZE_ALLOW_RESERVED | SANITIZE_ALLOW_PATH, 17313498266Sopenharmony_ci "f:\\com1", SANITIZE_ERR_OK 17413498266Sopenharmony_ci }, 17513498266Sopenharmony_ci { "com1:\\com1", SANITIZE_ALLOW_PATH, 17613498266Sopenharmony_ci "_com1:\\_com1", SANITIZE_ERR_OK 17713498266Sopenharmony_ci }, 17813498266Sopenharmony_ci { "com1:\\com1", SANITIZE_ALLOW_RESERVED | SANITIZE_ALLOW_PATH, 17913498266Sopenharmony_ci "com1:\\com1", SANITIZE_ERR_OK 18013498266Sopenharmony_ci }, 18113498266Sopenharmony_ci { "com1:\\com1", SANITIZE_ALLOW_RESERVED, 18213498266Sopenharmony_ci "com1__com1", SANITIZE_ERR_OK 18313498266Sopenharmony_ci }, 18413498266Sopenharmony_ci#ifndef MSDOS 18513498266Sopenharmony_ci { "\\com1", SANITIZE_ALLOW_PATH, 18613498266Sopenharmony_ci "\\_com1", SANITIZE_ERR_OK 18713498266Sopenharmony_ci }, 18813498266Sopenharmony_ci { "\\\\com1", SANITIZE_ALLOW_PATH, 18913498266Sopenharmony_ci "\\\\com1", SANITIZE_ERR_OK 19013498266Sopenharmony_ci }, 19113498266Sopenharmony_ci { "\\\\?\\C:\\com1", SANITIZE_ALLOW_PATH, 19213498266Sopenharmony_ci "\\\\?\\C:\\com1", SANITIZE_ERR_OK 19313498266Sopenharmony_ci }, 19413498266Sopenharmony_ci#endif 19513498266Sopenharmony_ci { "CoM1", 0, 19613498266Sopenharmony_ci "_CoM1", SANITIZE_ERR_OK 19713498266Sopenharmony_ci }, 19813498266Sopenharmony_ci { "CoM1", SANITIZE_ALLOW_RESERVED, 19913498266Sopenharmony_ci "CoM1", SANITIZE_ERR_OK 20013498266Sopenharmony_ci }, 20113498266Sopenharmony_ci { "COM56", 0, 20213498266Sopenharmony_ci "COM56", SANITIZE_ERR_OK 20313498266Sopenharmony_ci }, 20413498266Sopenharmony_ci /* At the moment we expect a maximum path length of 259. I assume MSDOS 20513498266Sopenharmony_ci has variable max path lengths depending on compiler that are shorter 20613498266Sopenharmony_ci so currently these "good" truncate tests won't run on MSDOS */ 20713498266Sopenharmony_ci#ifndef MSDOS 20813498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 20913498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 21013498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 21113498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 21213498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 21313498266Sopenharmony_ci "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 21413498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE, 21513498266Sopenharmony_ci "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 21613498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 21713498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 21813498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 21913498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 22013498266Sopenharmony_ci "FFFFF", SANITIZE_ERR_OK 22113498266Sopenharmony_ci }, 22213498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 22313498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 22413498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 22513498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 22613498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 22713498266Sopenharmony_ci "FFF\\FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 22813498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE | SANITIZE_ALLOW_PATH, 22913498266Sopenharmony_ci "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 23013498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 23113498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 23213498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 23313498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 23413498266Sopenharmony_ci "FFF\\FFFFF", SANITIZE_ERR_OK 23513498266Sopenharmony_ci }, 23613498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 23713498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 23813498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 23913498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 24013498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 24113498266Sopenharmony_ci "FFF\\FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 24213498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE, 24313498266Sopenharmony_ci "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 24413498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 24513498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 24613498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 24713498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 24813498266Sopenharmony_ci "FFF_F", SANITIZE_ERR_OK 24913498266Sopenharmony_ci }, 25013498266Sopenharmony_ci#endif /* !MSDOS */ 25113498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 25213498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 25313498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 25413498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 25513498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 25613498266Sopenharmony_ci "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 25713498266Sopenharmony_ci 0, 25813498266Sopenharmony_ci NULL, SANITIZE_ERR_INVALID_PATH 25913498266Sopenharmony_ci }, 26013498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 26113498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 26213498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 26313498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 26413498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 26513498266Sopenharmony_ci "FFFF\\FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 26613498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE, 26713498266Sopenharmony_ci NULL, SANITIZE_ERR_INVALID_PATH 26813498266Sopenharmony_ci }, 26913498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 27013498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 27113498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 27213498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 27313498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 27413498266Sopenharmony_ci "FFFFFFFFFFFFFFFFFFFFFFFFF\\FFFFFFFFFFFFFFFFFFFFFFFF", 27513498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE | SANITIZE_ALLOW_PATH, 27613498266Sopenharmony_ci NULL, SANITIZE_ERR_INVALID_PATH 27713498266Sopenharmony_ci }, 27813498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 27913498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 28013498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 28113498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 28213498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 28313498266Sopenharmony_ci "FFF\\FFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFF", 28413498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE | SANITIZE_ALLOW_PATH, 28513498266Sopenharmony_ci NULL, SANITIZE_ERR_INVALID_PATH 28613498266Sopenharmony_ci }, 28713498266Sopenharmony_ci { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 28813498266Sopenharmony_ci "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 28913498266Sopenharmony_ci "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 29013498266Sopenharmony_ci "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 29113498266Sopenharmony_ci "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" 29213498266Sopenharmony_ci "FF\\F:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 29313498266Sopenharmony_ci SANITIZE_ALLOW_TRUNCATE | SANITIZE_ALLOW_PATH, 29413498266Sopenharmony_ci NULL, SANITIZE_ERR_INVALID_PATH 29513498266Sopenharmony_ci }, 29613498266Sopenharmony_ci { NULL, 0, 29713498266Sopenharmony_ci NULL, SANITIZE_ERR_BAD_ARGUMENT 29813498266Sopenharmony_ci }, 29913498266Sopenharmony_ci }; 30013498266Sopenharmony_ci 30113498266Sopenharmony_ci size_t i; 30213498266Sopenharmony_ci 30313498266Sopenharmony_ci for(i = 0; i < sizeof(data) / sizeof(data[0]); ++i) { 30413498266Sopenharmony_ci char *output = NULL; 30513498266Sopenharmony_ci char *flagstr = NULL; 30613498266Sopenharmony_ci char *received_ccstr = NULL; 30713498266Sopenharmony_ci char *expected_ccstr = NULL; 30813498266Sopenharmony_ci SANITIZEcode res; 30913498266Sopenharmony_ci 31013498266Sopenharmony_ci res = sanitize_file_name(&output, data[i].input, data[i].flags); 31113498266Sopenharmony_ci 31213498266Sopenharmony_ci if(res == data[i].expected_result && 31313498266Sopenharmony_ci ((!output && !data[i].expected_output) || 31413498266Sopenharmony_ci (output && data[i].expected_output && 31513498266Sopenharmony_ci !strcmp(output, data[i].expected_output)))) { /* OK */ 31613498266Sopenharmony_ci free(output); 31713498266Sopenharmony_ci continue; 31813498266Sopenharmony_ci } 31913498266Sopenharmony_ci 32013498266Sopenharmony_ci flagstr = getflagstr(data[i].flags); 32113498266Sopenharmony_ci abort_unless(flagstr, "out of memory"); 32213498266Sopenharmony_ci received_ccstr = getcurlcodestr(res); 32313498266Sopenharmony_ci abort_unless(received_ccstr, "out of memory"); 32413498266Sopenharmony_ci expected_ccstr = getcurlcodestr(data[i].expected_result); 32513498266Sopenharmony_ci abort_unless(expected_ccstr, "out of memory"); 32613498266Sopenharmony_ci 32713498266Sopenharmony_ci unitfail++; 32813498266Sopenharmony_ci fprintf(stderr, "\n" 32913498266Sopenharmony_ci "%s:%d sanitize_file_name failed.\n" 33013498266Sopenharmony_ci "input: %s\n" 33113498266Sopenharmony_ci "flags: %s\n" 33213498266Sopenharmony_ci "output: %s\n" 33313498266Sopenharmony_ci "result: %s\n" 33413498266Sopenharmony_ci "expected output: %s\n" 33513498266Sopenharmony_ci "expected result: %s\n", 33613498266Sopenharmony_ci __FILE__, __LINE__, 33713498266Sopenharmony_ci data[i].input, 33813498266Sopenharmony_ci flagstr, 33913498266Sopenharmony_ci (output ? output : "(null)"), 34013498266Sopenharmony_ci received_ccstr, 34113498266Sopenharmony_ci (data[i].expected_output ? data[i].expected_output : "(null)"), 34213498266Sopenharmony_ci expected_ccstr); 34313498266Sopenharmony_ci 34413498266Sopenharmony_ci free(output); 34513498266Sopenharmony_ci free(flagstr); 34613498266Sopenharmony_ci free(received_ccstr); 34713498266Sopenharmony_ci free(expected_ccstr); 34813498266Sopenharmony_ci } 34913498266Sopenharmony_ci} /* END sanitize_file_name */ 35013498266Sopenharmony_ci 35113498266Sopenharmony_ci#else 35213498266Sopenharmony_ciUNITTEST_START 35313498266Sopenharmony_ci{ 35413498266Sopenharmony_ci fprintf(stderr, "Skipped test not for this platform\n"); 35513498266Sopenharmony_ci} 35613498266Sopenharmony_ci#endif /* _WIN32 || MSDOS */ 35713498266Sopenharmony_ci 35813498266Sopenharmony_ciUNITTEST_STOP 359