xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/wind/test-prohibited.c (revision d3273b5b76f5afaafe308cead5511dbb8df8c5e9)
1*d3273b5bSchristos /*	$NetBSD: test-prohibited.c,v 1.2 2017/01/28 21:31:50 christos Exp $	*/
2ca1c9b0cSelric 
3ca1c9b0cSelric /*
4ca1c9b0cSelric  * Copyright (c) 2004 Kungliga Tekniska Högskolan
5ca1c9b0cSelric  * (Royal Institute of Technology, Stockholm, Sweden).
6ca1c9b0cSelric  * All rights reserved.
7ca1c9b0cSelric  *
8ca1c9b0cSelric  * Redistribution and use in source and binary forms, with or without
9ca1c9b0cSelric  * modification, are permitted provided that the following conditions
10ca1c9b0cSelric  * are met:
11ca1c9b0cSelric  *
12ca1c9b0cSelric  * 1. Redistributions of source code must retain the above copyright
13ca1c9b0cSelric  *    notice, this list of conditions and the following disclaimer.
14ca1c9b0cSelric  *
15ca1c9b0cSelric  * 2. Redistributions in binary form must reproduce the above copyright
16ca1c9b0cSelric  *    notice, this list of conditions and the following disclaimer in the
17ca1c9b0cSelric  *    documentation and/or other materials provided with the distribution.
18ca1c9b0cSelric  *
19ca1c9b0cSelric  * 3. Neither the name of the Institute nor the names of its contributors
20ca1c9b0cSelric  *    may be used to endorse or promote products derived from this software
21ca1c9b0cSelric  *    without specific prior written permission.
22ca1c9b0cSelric  *
23ca1c9b0cSelric  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24ca1c9b0cSelric  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25ca1c9b0cSelric  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26ca1c9b0cSelric  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27ca1c9b0cSelric  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28ca1c9b0cSelric  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29ca1c9b0cSelric  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30ca1c9b0cSelric  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31ca1c9b0cSelric  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32ca1c9b0cSelric  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33ca1c9b0cSelric  * SUCH DAMAGE.
34ca1c9b0cSelric  */
35ca1c9b0cSelric 
36ca1c9b0cSelric #ifdef HAVE_CONFIG_H
37ca1c9b0cSelric #include <config.h>
38ca1c9b0cSelric #endif
39ca1c9b0cSelric #include <stdio.h>
40ca1c9b0cSelric #include "windlocl.h"
41ca1c9b0cSelric 
42ca1c9b0cSelric static uint32_t positives[] = {
43ca1c9b0cSelric     0x00A0, 0x3000,
44ca1c9b0cSelric     0x0080, 0x009F, 0x206A, 0x206F, 0xFEFF,
45ca1c9b0cSelric     0xFFF9, 0xFFFD, 0xFFFE, 0xFFFF,
46ca1c9b0cSelric     0x1D173, 0x1D17A,
47ca1c9b0cSelric     0xE000, 0xF8FF, 0xF0000, 0xFFFFD,
48ca1c9b0cSelric     0x100000, 0x10FFFD,
49ca1c9b0cSelric     0xFDD0, 0xFDEF,
50ca1c9b0cSelric     0xFFFE, 0xFFFF,
51ca1c9b0cSelric     0x1FFFE, 0x1FFFF,
52ca1c9b0cSelric     0x2FFFE, 0x2FFFF,
53ca1c9b0cSelric     0x3FFFE, 0x3FFFF,
54ca1c9b0cSelric     0x4FFFE, 0x4FFFF,
55ca1c9b0cSelric     0x5FFFE, 0x5FFFF,
56ca1c9b0cSelric     0x6FFFE, 0x6FFFF,
57ca1c9b0cSelric     0x7FFFE, 0x7FFFF,
58ca1c9b0cSelric     0x8FFFE, 0x8FFFF,
59ca1c9b0cSelric     0x9FFFE, 0x9FFFF,
60ca1c9b0cSelric     0xAFFFE, 0xAFFFF,
61ca1c9b0cSelric     0xBFFFE, 0xBFFFF,
62ca1c9b0cSelric     0xCFFFE, 0xCFFFF,
63ca1c9b0cSelric     0xDFFFE, 0xDFFFF,
64ca1c9b0cSelric     0xEFFFE, 0xEFFFF,
65ca1c9b0cSelric     0xFFFFE, 0xFFFFF,
66ca1c9b0cSelric     0x10FFFE, 0x10FFFF,
67ca1c9b0cSelric     0xD800,  0xDFFF,
68ca1c9b0cSelric     0xFFF9,
69ca1c9b0cSelric     0xFFFA,
70ca1c9b0cSelric     0xFFFB,
71ca1c9b0cSelric     0xFFFC,
72ca1c9b0cSelric     0x2FF0, 0x2FFB,
73ca1c9b0cSelric     0x0340,
74ca1c9b0cSelric     0x0341,
75ca1c9b0cSelric     0x200E,
76ca1c9b0cSelric     0x200F,
77ca1c9b0cSelric     0x202A,
78ca1c9b0cSelric     0x202B,
79ca1c9b0cSelric     0x202C,
80ca1c9b0cSelric     0x202D,
81ca1c9b0cSelric     0x202E,
82ca1c9b0cSelric     0x206A,
83ca1c9b0cSelric     0x206B,
84ca1c9b0cSelric     0x206C,
85ca1c9b0cSelric     0x206D,
86ca1c9b0cSelric     0x206E,
87ca1c9b0cSelric     0x206F,
88ca1c9b0cSelric     0xE0001,
89ca1c9b0cSelric     0xE0020,
90ca1c9b0cSelric     0xE007F,
91ca1c9b0cSelric };
92ca1c9b0cSelric 
93ca1c9b0cSelric static uint32_t negatives[] = {
94ca1c9b0cSelric     0x0000, 0x001F, 0x007F,
95ca1c9b0cSelric     0x0020, 0x2069, 0x2070, 0x0FFF8,
96ca1c9b0cSelric     0x1D172, 0x1D17B,
97ca1c9b0cSelric     0xF900,
98ca1c9b0cSelric     0xFDCF, 0xFDF0,
99ca1c9b0cSelric     0x10000,
100ca1c9b0cSelric     0x1FFFD, 0x20000,
101ca1c9b0cSelric     0x2FFFD, 0x30000,
102ca1c9b0cSelric     0x3FFFD, 0x40000,
103ca1c9b0cSelric     0x4FFFD, 0x50000,
104ca1c9b0cSelric     0x5FFFD, 0x60000,
105ca1c9b0cSelric     0x6FFFD, 0x70000,
106ca1c9b0cSelric     0x7FFFD, 0x80000,
107ca1c9b0cSelric     0x8FFFD, 0x90000,
108ca1c9b0cSelric     0x9FFFD, 0xA0000,
109ca1c9b0cSelric     0xAFFFD, 0xB0000,
110ca1c9b0cSelric     0xBFFFD, 0xC0000,
111ca1c9b0cSelric     0xCFFFD, 0xD0000,
112ca1c9b0cSelric     0xDFFFD, 0xE0000,
113ca1c9b0cSelric     0xEFFFD,
114ca1c9b0cSelric     0x110000,
115ca1c9b0cSelric     0xD7FF,
116ca1c9b0cSelric     0xFFF8,
117ca1c9b0cSelric     0x2FEF,  0x2FFC,
118ca1c9b0cSelric };
119ca1c9b0cSelric 
120ca1c9b0cSelric int
main(void)121ca1c9b0cSelric main(void)
122ca1c9b0cSelric {
123ca1c9b0cSelric     unsigned i;
124ca1c9b0cSelric     unsigned failures = 0;
125ca1c9b0cSelric 
126ca1c9b0cSelric     for (i = 0; i < sizeof(positives)/sizeof(positives[0]); ++i)
127ca1c9b0cSelric 	if (!_wind_stringprep_error(positives[i], WIND_PROFILE_NAME)) {
128ca1c9b0cSelric 	    printf ("code-point 0x%x not marked as prohibited\n",
129ca1c9b0cSelric 		    positives[i]);
130ca1c9b0cSelric 	    ++failures;
131ca1c9b0cSelric 	}
132ca1c9b0cSelric 
133ca1c9b0cSelric     for (i = 0; i < sizeof(negatives)/sizeof(negatives[0]); ++i)
134ca1c9b0cSelric 	if (_wind_stringprep_error(negatives[i], WIND_PROFILE_NAME)) {
135ca1c9b0cSelric 	    printf ("code-point 0x%x not marked as non-prohibited\n",
136ca1c9b0cSelric 		    negatives[i]);
137ca1c9b0cSelric 	    ++failures;
138ca1c9b0cSelric 	}
139ca1c9b0cSelric     return failures != 0;
140ca1c9b0cSelric }
141