Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509v3/v3_lib.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | static struct stack_st_X509V3_EXT_METHOD *ext_list = | - | ||||||||||||
5 | ((void *)0) | - | ||||||||||||
6 | ; | - | ||||||||||||
7 | - | |||||||||||||
8 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, | - | ||||||||||||
9 | const X509V3_EXT_METHOD * const *b); | - | ||||||||||||
10 | static void ext_list_free(X509V3_EXT_METHOD *ext); | - | ||||||||||||
11 | - | |||||||||||||
12 | int | - | ||||||||||||
13 | X509V3_EXT_add(X509V3_EXT_METHOD *ext) | - | ||||||||||||
14 | { | - | ||||||||||||
15 | if (!ext_list
| 0 | ||||||||||||
16 | ERR_put_error(34,(0xfff),((1|64)),__FILE__,78); | - | ||||||||||||
17 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
18 | } | - | ||||||||||||
19 | if (!sk_push(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), ((void*) (1 ? (ext) : (X509V3_EXT_METHOD*)0)))
| 0 | ||||||||||||
20 | ERR_put_error(34,(0xfff),((1|64)),__FILE__,82); | - | ||||||||||||
21 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
22 | } | - | ||||||||||||
23 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
24 | } | - | ||||||||||||
25 | - | |||||||||||||
26 | static int | - | ||||||||||||
27 | ext_cmp(const X509V3_EXT_METHOD * const *a, const X509V3_EXT_METHOD * const *b) | - | ||||||||||||
28 | { | - | ||||||||||||
29 | return executed 2712 times by 7 tests: ((*a)->ext_nid - (*b)->ext_nid);return ((*a)->ext_nid - (*b)->ext_nid); Executed by:
executed 2712 times by 7 tests: return ((*a)->ext_nid - (*b)->ext_nid); Executed by:
| 2712 | ||||||||||||
30 | } | - | ||||||||||||
31 | - | |||||||||||||
32 | static int ext_cmp_BSEARCH_CMP_FN(const void *, const void *); | - | ||||||||||||
33 | static int ext_cmp(const X509V3_EXT_METHOD * const *, const X509V3_EXT_METHOD * const *); | - | ||||||||||||
34 | static const X509V3_EXT_METHOD * *OBJ_bsearch_ext(const X509V3_EXT_METHOD * *key, const X509V3_EXT_METHOD * const *base, int num); | - | ||||||||||||
35 | - | |||||||||||||
36 | static int | - | ||||||||||||
37 | ext_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) | - | ||||||||||||
38 | { | - | ||||||||||||
39 | const X509V3_EXT_METHOD * const *a = a_; | - | ||||||||||||
40 | const X509V3_EXT_METHOD * const *b = b_; | - | ||||||||||||
41 | return executed 2712 times by 7 tests: ext_cmp(a, b);return ext_cmp(a, b); Executed by:
executed 2712 times by 7 tests: return ext_cmp(a, b); Executed by:
| 2712 | ||||||||||||
42 | } | - | ||||||||||||
43 | - | |||||||||||||
44 | static const X509V3_EXT_METHOD * * | - | ||||||||||||
45 | OBJ_bsearch_ext(const X509V3_EXT_METHOD * *key, const X509V3_EXT_METHOD * const *base, int num) | - | ||||||||||||
46 | { | - | ||||||||||||
47 | return executed 577 times by 7 tests: (const X509V3_EXT_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const X509V3_EXT_METHOD *),return (const X509V3_EXT_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const X509V3_EXT_METHOD *), ext_cmp_BSEARCH_CMP_FN); Executed by:
executed 577 times by 7 tests: return (const X509V3_EXT_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const X509V3_EXT_METHOD *), ext_cmp_BSEARCH_CMP_FN); Executed by:
| 577 | ||||||||||||
48 | ext_cmp_BSEARCH_CMP_FN); executed 577 times by 7 tests: return (const X509V3_EXT_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const X509V3_EXT_METHOD *), ext_cmp_BSEARCH_CMP_FN); Executed by:
| 577 | ||||||||||||
49 | } | - | ||||||||||||
50 | - | |||||||||||||
51 | const X509V3_EXT_METHOD * | - | ||||||||||||
52 | X509V3_EXT_get_nid(int nid) | - | ||||||||||||
53 | { | - | ||||||||||||
54 | X509V3_EXT_METHOD tmp; | - | ||||||||||||
55 | const X509V3_EXT_METHOD *t = &tmp, * const *ret; | - | ||||||||||||
56 | int idx; | - | ||||||||||||
57 | - | |||||||||||||
58 | if (nid < 0
| 0-577 | ||||||||||||
59 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
60 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
61 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
62 | tmp.ext_nid = nid; | - | ||||||||||||
63 | ret = OBJ_bsearch_ext(&t, standard_exts, (sizeof(standard_exts)/sizeof(X509V3_EXT_METHOD *))); | - | ||||||||||||
64 | if (ret
| 0-577 | ||||||||||||
65 | return executed 577 times by 7 tests: *ret;return *ret; Executed by:
executed 577 times by 7 tests: return *ret; Executed by:
| 577 | ||||||||||||
66 | if (!ext_list
| 0 | ||||||||||||
67 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
68 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
69 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
70 | idx = sk_find(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), ((void*) (1 ? (&tmp) : (X509V3_EXT_METHOD*)0))); | - | ||||||||||||
71 | if (idx == -1
| 0 | ||||||||||||
72 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
73 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
74 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
75 | return never executed: ((X509V3_EXT_METHOD *)sk_value(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), (idx)));return ((X509V3_EXT_METHOD *)sk_value(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), (idx))); never executed: return ((X509V3_EXT_METHOD *)sk_value(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), (idx))); | 0 | ||||||||||||
76 | } | - | ||||||||||||
77 | - | |||||||||||||
78 | const X509V3_EXT_METHOD * | - | ||||||||||||
79 | X509V3_EXT_get(X509_EXTENSION *ext) | - | ||||||||||||
80 | { | - | ||||||||||||
81 | int nid; | - | ||||||||||||
82 | - | |||||||||||||
83 | if ((
| 0-564 | ||||||||||||
84 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
85 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
86 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
87 | return executed 564 times by 7 tests: X509V3_EXT_get_nid(nid);return X509V3_EXT_get_nid(nid); Executed by:
executed 564 times by 7 tests: return X509V3_EXT_get_nid(nid); Executed by:
| 564 | ||||||||||||
88 | } | - | ||||||||||||
89 | - | |||||||||||||
90 | int | - | ||||||||||||
91 | X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) | - | ||||||||||||
92 | { | - | ||||||||||||
93 | for (; extlist->ext_nid!=-1
| 0 | ||||||||||||
94 | if (!X509V3_EXT_add(extlist)
| 0 | ||||||||||||
95 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
96 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
97 | } | - | ||||||||||||
98 | - | |||||||||||||
99 | int | - | ||||||||||||
100 | X509V3_EXT_add_alias(int nid_to, int nid_from) | - | ||||||||||||
101 | { | - | ||||||||||||
102 | const X509V3_EXT_METHOD *ext; | - | ||||||||||||
103 | X509V3_EXT_METHOD *tmpext; | - | ||||||||||||
104 | - | |||||||||||||
105 | if (!(ext = X509V3_EXT_get_nid(nid_from))
| 0 | ||||||||||||
106 | ERR_put_error(34,(0xfff),(102),__FILE__,160); | - | ||||||||||||
107 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
108 | } | - | ||||||||||||
109 | if (!(tmpext = malloc(sizeof(X509V3_EXT_METHOD)))
| 0 | ||||||||||||
110 | ERR_put_error(34,(0xfff),((1|64)),__FILE__,164); | - | ||||||||||||
111 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
112 | } | - | ||||||||||||
113 | *tmpext = *ext; | - | ||||||||||||
114 | tmpext->ext_nid = nid_to; | - | ||||||||||||
115 | tmpext->ext_flags |= 0x1; | - | ||||||||||||
116 | return never executed: X509V3_EXT_add(tmpext);return X509V3_EXT_add(tmpext); never executed: return X509V3_EXT_add(tmpext); | 0 | ||||||||||||
117 | } | - | ||||||||||||
118 | - | |||||||||||||
119 | void | - | ||||||||||||
120 | X509V3_EXT_cleanup(void) | - | ||||||||||||
121 | { | - | ||||||||||||
122 | sk_pop_free(((_STACK*) (1 ? (ext_list) : (struct stack_st_X509V3_EXT_METHOD*)0)), ((void (*)(void *)) ((1 ? (ext_list_free) : (void (*)(X509V3_EXT_METHOD *))0)))); | - | ||||||||||||
123 | ext_list = | - | ||||||||||||
124 | ((void *)0) | - | ||||||||||||
125 | ; | - | ||||||||||||
126 | } never executed: end of block | 0 | ||||||||||||
127 | - | |||||||||||||
128 | static void | - | ||||||||||||
129 | ext_list_free(X509V3_EXT_METHOD *ext) | - | ||||||||||||
130 | { | - | ||||||||||||
131 | if (ext->ext_flags & 0x1
| 0 | ||||||||||||
132 | free(ext); never executed: free(ext); | 0 | ||||||||||||
133 | } never executed: end of block | 0 | ||||||||||||
134 | - | |||||||||||||
135 | - | |||||||||||||
136 | - | |||||||||||||
137 | - | |||||||||||||
138 | - | |||||||||||||
139 | int | - | ||||||||||||
140 | X509V3_add_standard_extensions(void) | - | ||||||||||||
141 | { | - | ||||||||||||
142 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
143 | } | - | ||||||||||||
144 | - | |||||||||||||
145 | - | |||||||||||||
146 | - | |||||||||||||
147 | void * | - | ||||||||||||
148 | X509V3_EXT_d2i(X509_EXTENSION *ext) | - | ||||||||||||
149 | { | - | ||||||||||||
150 | const X509V3_EXT_METHOD *method; | - | ||||||||||||
151 | const unsigned char *p; | - | ||||||||||||
152 | - | |||||||||||||
153 | if (!(method = X509V3_EXT_get(ext))
| 0-561 | ||||||||||||
154 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
155 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
156 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
157 | p = ext->value->data; | - | ||||||||||||
158 | if (method->it
| 0-561 | ||||||||||||
159 | return executed 561 times by 6 tests: ASN1_item_d2i(return ASN1_item_d2i( ((void *)0) , &p, ext->value->length, method->it); Executed by:
executed 561 times by 6 tests: return ASN1_item_d2i( ((void *)0) , &p, ext->value->length, method->it); Executed by:
| 561 | ||||||||||||
160 | ((void *)0) executed 561 times by 6 tests: return ASN1_item_d2i( ((void *)0) , &p, ext->value->length, method->it); Executed by:
| 561 | ||||||||||||
161 | , &p, ext->value->length, executed 561 times by 6 tests: return ASN1_item_d2i( ((void *)0) , &p, ext->value->length, method->it); Executed by:
| 561 | ||||||||||||
162 | method->it); executed 561 times by 6 tests: return ASN1_item_d2i( ((void *)0) , &p, ext->value->length, method->it); Executed by:
| 561 | ||||||||||||
163 | return never executed: method->d2i(return method->d2i( ((void *)0) , &p, ext->value->length); never executed: return method->d2i( ((void *)0) , &p, ext->value->length); | 0 | ||||||||||||
164 | ((void *)0) never executed: return method->d2i( ((void *)0) , &p, ext->value->length); | 0 | ||||||||||||
165 | , &p, ext->value->length); never executed: return method->d2i( ((void *)0) , &p, ext->value->length); | 0 | ||||||||||||
166 | } | - | ||||||||||||
167 | void * | - | ||||||||||||
168 | X509V3_get_d2i(const struct stack_st_X509_EXTENSION *x, int nid, int *crit, int *idx) | - | ||||||||||||
169 | { | - | ||||||||||||
170 | int lastpos, i; | - | ||||||||||||
171 | X509_EXTENSION *ex, *found_ex = | - | ||||||||||||
172 | ((void *)0) | - | ||||||||||||
173 | ; | - | ||||||||||||
174 | - | |||||||||||||
175 | if (!x
| 15-1997 | ||||||||||||
176 | if (idx
| 0-15 | ||||||||||||
177 | * never executed: idx = -1;*idx = -1; never executed: *idx = -1; | 0 | ||||||||||||
178 | if (crit
| 0-15 | ||||||||||||
179 | * never executed: crit = -1;*crit = -1; never executed: *crit = -1; | 0 | ||||||||||||
180 | return executed 15 times by 1 test: return ((void *)0) ; Executed by:
executed 15 times by 1 test: return ((void *)0) ; Executed by:
| 15 | ||||||||||||
181 | ((void *)0) executed 15 times by 1 test: return ((void *)0) ; Executed by:
| 15 | ||||||||||||
182 | ; executed 15 times by 1 test: return ((void *)0) ; Executed by:
| 15 | ||||||||||||
183 | } | - | ||||||||||||
184 | if (idx
| 0-1997 | ||||||||||||
185 | lastpos = *idx + 1; never executed: lastpos = *idx + 1; | 0 | ||||||||||||
186 | else | - | ||||||||||||
187 | lastpos = 0; executed 1997 times by 6 tests: lastpos = 0; Executed by:
| 1997 | ||||||||||||
188 | if (lastpos < 0
| 0-1997 | ||||||||||||
189 | lastpos = 0; never executed: lastpos = 0; | 0 | ||||||||||||
190 | for (i = lastpos; i < sk_num(((_STACK*) (1 ? (x) : (struct stack_st_X509_EXTENSION*)0)))
| 1997-6715 | ||||||||||||
191 | ex = ((X509_EXTENSION *)sk_value(((_STACK*) (1 ? (x) : (struct stack_st_X509_EXTENSION*)0)), (i))); | - | ||||||||||||
192 | if (OBJ_obj2nid(ex->object) == nid
| 561-6154 | ||||||||||||
193 | if (idx
| 0-561 | ||||||||||||
194 | *idx = i; | - | ||||||||||||
195 | found_ex = ex; | - | ||||||||||||
196 | break; never executed: break; | 0 | ||||||||||||
197 | } else if (found_ex
| 0-561 | ||||||||||||
198 | - | |||||||||||||
199 | if (crit
| 0 | ||||||||||||
200 | * never executed: crit = -2;*crit = -2; never executed: *crit = -2; | 0 | ||||||||||||
201 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
202 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
203 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
204 | } | - | ||||||||||||
205 | found_ex = ex; | - | ||||||||||||
206 | } executed 561 times by 6 tests: end of block Executed by:
| 561 | ||||||||||||
207 | } executed 6715 times by 6 tests: end of block Executed by:
| 6715 | ||||||||||||
208 | if (found_ex
| 561-1436 | ||||||||||||
209 | - | |||||||||||||
210 | if (crit
| 0-561 | ||||||||||||
211 | * never executed: crit = X509_EXTENSION_get_critical(found_ex);*crit = X509_EXTENSION_get_critical(found_ex); never executed: *crit = X509_EXTENSION_get_critical(found_ex); | 0 | ||||||||||||
212 | return executed 561 times by 6 tests: X509V3_EXT_d2i(found_ex);return X509V3_EXT_d2i(found_ex); Executed by:
executed 561 times by 6 tests: return X509V3_EXT_d2i(found_ex); Executed by:
| 561 | ||||||||||||
213 | } | - | ||||||||||||
214 | - | |||||||||||||
215 | - | |||||||||||||
216 | if (idx
| 0-1436 | ||||||||||||
217 | * never executed: idx = -1;*idx = -1; never executed: *idx = -1; | 0 | ||||||||||||
218 | if (crit
| 198-1238 | ||||||||||||
219 | * executed 198 times by 5 tests: crit = -1;*crit = -1; Executed by:
executed 198 times by 5 tests: *crit = -1; Executed by:
| 198 | ||||||||||||
220 | return executed 1436 times by 5 tests: return ((void *)0) ; Executed by:
executed 1436 times by 5 tests: return ((void *)0) ; Executed by:
| 1436 | ||||||||||||
221 | ((void *)0) executed 1436 times by 5 tests: return ((void *)0) ; Executed by:
| 1436 | ||||||||||||
222 | ; executed 1436 times by 5 tests: return ((void *)0) ; Executed by:
| 1436 | ||||||||||||
223 | } | - | ||||||||||||
224 | - | |||||||||||||
225 | - | |||||||||||||
226 | - | |||||||||||||
227 | - | |||||||||||||
228 | - | |||||||||||||
229 | - | |||||||||||||
230 | int | - | ||||||||||||
231 | X509V3_add1_i2d(struct stack_st_X509_EXTENSION **x, int nid, void *value, | - | ||||||||||||
232 | int crit, unsigned long flags) | - | ||||||||||||
233 | { | - | ||||||||||||
234 | int extidx = -1; | - | ||||||||||||
235 | int errcode; | - | ||||||||||||
236 | X509_EXTENSION *ext, *extmp; | - | ||||||||||||
237 | unsigned long ext_op = flags & 0xfL; | - | ||||||||||||
238 | - | |||||||||||||
239 | - | |||||||||||||
240 | - | |||||||||||||
241 | - | |||||||||||||
242 | if (ext_op != 1L
| 0-13 | ||||||||||||
243 | extidx = X509v3_get_ext_by_NID(*x, nid, -1); executed 13 times by 1 test: extidx = X509v3_get_ext_by_NID(*x, nid, -1); Executed by:
| 13 | ||||||||||||
244 | - | |||||||||||||
245 | - | |||||||||||||
246 | if (extidx >= 0
| 0-13 | ||||||||||||
247 | - | |||||||||||||
248 | if (ext_op == 4L
| 0 | ||||||||||||
249 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
250 | - | |||||||||||||
251 | if (ext_op == 0L
| 0 | ||||||||||||
252 | errcode = 145; | - | ||||||||||||
253 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
254 | } | - | ||||||||||||
255 | - | |||||||||||||
256 | if (ext_op == 5L
| 0 | ||||||||||||
257 | if (!(X509_EXTENSION *)sk_delete(((_STACK*) (1 ? (*x) : (struct stack_st_X509_EXTENSION*)0)), (extidx))
| 0 | ||||||||||||
258 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
259 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
260 | } | - | ||||||||||||
261 | } never executed: else {end of block | 0 | ||||||||||||
262 | - | |||||||||||||
263 | - | |||||||||||||
264 | - | |||||||||||||
265 | if ((
| 0-13 | ||||||||||||
266 | (
| 0-13 | ||||||||||||
267 | errcode = 102; | - | ||||||||||||
268 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
269 | } | - | ||||||||||||
270 | } executed 13 times by 1 test: end of block Executed by:
| 13 | ||||||||||||
271 | - | |||||||||||||
272 | - | |||||||||||||
273 | - | |||||||||||||
274 | - | |||||||||||||
275 | - | |||||||||||||
276 | ext = X509V3_EXT_i2d(nid, crit, value); | - | ||||||||||||
277 | - | |||||||||||||
278 | if (!ext
| 0-13 | ||||||||||||
279 | ERR_put_error(34,(0xfff),(144),__FILE__,333); | - | ||||||||||||
280 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
281 | } | - | ||||||||||||
282 | - | |||||||||||||
283 | - | |||||||||||||
284 | if (extidx >= 0
| 0-13 | ||||||||||||
285 | extmp = ((X509_EXTENSION *)sk_value(((_STACK*) (1 ? (*x) : (struct stack_st_X509_EXTENSION*)0)), (extidx))); | - | ||||||||||||
286 | X509_EXTENSION_free(extmp); | - | ||||||||||||
287 | if (!sk_set(((_STACK*) (1 ? (*x) : (struct stack_st_X509_EXTENSION*)0)), (extidx), ((void*) (1 ? (ext) : (X509_EXTENSION*)0)))
| 0 | ||||||||||||
288 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
289 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
290 | } | - | ||||||||||||
291 | - | |||||||||||||
292 | if (!*x
| 0-13 | ||||||||||||
293 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
294 | if (!sk_push(((_STACK*) (1 ? (*x) : (struct stack_st_X509_EXTENSION*)0)), ((void*) (1 ? (ext) : (X509_EXTENSION*)0)))
| 0-13 | ||||||||||||
295 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
296 | - | |||||||||||||
297 | return executed 13 times by 1 test: 1;return 1; Executed by:
executed 13 times by 1 test: return 1; Executed by:
| 13 | ||||||||||||
298 | - | |||||||||||||
299 | err: | - | ||||||||||||
300 | if (!(flags & 0x10)
| 0 | ||||||||||||
301 | ERR_put_error(34,(0xfff),(errcode),__FILE__,355); never executed: ERR_put_error(34,(0xfff),(errcode),__FILE__,355); | 0 | ||||||||||||
302 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
303 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |