Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509/x509_req.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | - | |||||||||||||||||||
7 | X509_REQ * | - | ||||||||||||||||||
8 | X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) | - | ||||||||||||||||||
9 | { | - | ||||||||||||||||||
10 | X509_REQ *ret; | - | ||||||||||||||||||
11 | X509_REQ_INFO *ri; | - | ||||||||||||||||||
12 | int i; | - | ||||||||||||||||||
13 | EVP_PKEY *pktmp; | - | ||||||||||||||||||
14 | - | |||||||||||||||||||
15 | ret = X509_REQ_new(); | - | ||||||||||||||||||
16 | if (ret ==
| 0 | ||||||||||||||||||
17 | ((void *)0)
| 0 | ||||||||||||||||||
18 | ) { | - | ||||||||||||||||||
19 | ERR_put_error(11,(0xfff),((1|64)),__FILE__,83); | - | ||||||||||||||||||
20 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
21 | } | - | ||||||||||||||||||
22 | - | |||||||||||||||||||
23 | ri = ret->req_info; | - | ||||||||||||||||||
24 | - | |||||||||||||||||||
25 | if ((
| 0 | ||||||||||||||||||
26 | ((void *)0)
| 0 | ||||||||||||||||||
27 | ) | - | ||||||||||||||||||
28 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
29 | if (ASN1_INTEGER_set(ri->version, 0) == 0
| 0 | ||||||||||||||||||
30 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
31 | - | |||||||||||||||||||
32 | if (!X509_REQ_set_subject_name(ret, X509_get_subject_name(x))
| 0 | ||||||||||||||||||
33 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
34 | - | |||||||||||||||||||
35 | if ((
| 0 | ||||||||||||||||||
36 | ((void *)0)
| 0 | ||||||||||||||||||
37 | ) | - | ||||||||||||||||||
38 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
39 | - | |||||||||||||||||||
40 | i = X509_REQ_set_pubkey(ret, pktmp); | - | ||||||||||||||||||
41 | EVP_PKEY_free(pktmp); | - | ||||||||||||||||||
42 | if (!i
| 0 | ||||||||||||||||||
43 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
44 | - | |||||||||||||||||||
45 | if (pkey !=
| 0 | ||||||||||||||||||
46 | ((void *)0)
| 0 | ||||||||||||||||||
47 | ) { | - | ||||||||||||||||||
48 | if (!X509_REQ_sign(ret, pkey, md)
| 0 | ||||||||||||||||||
49 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
50 | } never executed: end of block | 0 | ||||||||||||||||||
51 | return never executed: (ret);return (ret); never executed: return (ret); | 0 | ||||||||||||||||||
52 | - | |||||||||||||||||||
53 | err: | - | ||||||||||||||||||
54 | X509_REQ_free(ret); | - | ||||||||||||||||||
55 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
56 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
57 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
58 | } | - | ||||||||||||||||||
59 | - | |||||||||||||||||||
60 | EVP_PKEY * | - | ||||||||||||||||||
61 | X509_REQ_get_pubkey(X509_REQ *req) | - | ||||||||||||||||||
62 | { | - | ||||||||||||||||||
63 | if ((
| 0-2 | ||||||||||||||||||
64 | ((void *)0)
| 0-2 | ||||||||||||||||||
65 | )
| 0-2 | ||||||||||||||||||
66 | ((void *)0)
| 0-2 | ||||||||||||||||||
67 | )
| 0-2 | ||||||||||||||||||
68 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
69 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
70 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
71 | return executed 2 times by 1 test: (X509_PUBKEY_get(req->req_info->pubkey));return (X509_PUBKEY_get(req->req_info->pubkey)); Executed by:
executed 2 times by 1 test: return (X509_PUBKEY_get(req->req_info->pubkey)); Executed by:
| 2 | ||||||||||||||||||
72 | } | - | ||||||||||||||||||
73 | - | |||||||||||||||||||
74 | int | - | ||||||||||||||||||
75 | X509_REQ_check_private_key(X509_REQ *x, EVP_PKEY *k) | - | ||||||||||||||||||
76 | { | - | ||||||||||||||||||
77 | EVP_PKEY *xk = | - | ||||||||||||||||||
78 | ((void *)0) | - | ||||||||||||||||||
79 | ; | - | ||||||||||||||||||
80 | int ok = 0; | - | ||||||||||||||||||
81 | - | |||||||||||||||||||
82 | xk = X509_REQ_get_pubkey(x); | - | ||||||||||||||||||
83 | switch (EVP_PKEY_cmp(xk, k)) { | - | ||||||||||||||||||
84 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||
85 | ok = 1; | - | ||||||||||||||||||
86 | break; never executed: break; | 0 | ||||||||||||||||||
87 | case never executed: 0:case 0: never executed: case 0: | 0 | ||||||||||||||||||
88 | ERR_put_error(11,(0xfff),(116),__FILE__,136); | - | ||||||||||||||||||
89 | break; never executed: break; | 0 | ||||||||||||||||||
90 | case never executed: -1:case -1: never executed: case -1: | 0 | ||||||||||||||||||
91 | ERR_put_error(11,(0xfff),(115),__FILE__,139); | - | ||||||||||||||||||
92 | break; never executed: break; | 0 | ||||||||||||||||||
93 | case never executed: -2:case -2: never executed: case -2: | 0 | ||||||||||||||||||
94 | - | |||||||||||||||||||
95 | if (k->type == 408
| 0 | ||||||||||||||||||
96 | ERR_put_error(11,(0xfff),(16),__FILE__,144); | - | ||||||||||||||||||
97 | break; never executed: break; | 0 | ||||||||||||||||||
98 | } | - | ||||||||||||||||||
99 | - | |||||||||||||||||||
100 | - | |||||||||||||||||||
101 | if (k->type == 28
| 0 | ||||||||||||||||||
102 | - | |||||||||||||||||||
103 | ERR_put_error(11,(0xfff),(114),__FILE__,151); | - | ||||||||||||||||||
104 | break; never executed: break; | 0 | ||||||||||||||||||
105 | } | - | ||||||||||||||||||
106 | - | |||||||||||||||||||
107 | ERR_put_error(11,(0xfff),(117),__FILE__,155); | - | ||||||||||||||||||
108 | } never executed: end of block | 0 | ||||||||||||||||||
109 | - | |||||||||||||||||||
110 | EVP_PKEY_free(xk); | - | ||||||||||||||||||
111 | return never executed: (ok);return (ok); never executed: return (ok); | 0 | ||||||||||||||||||
112 | } | - | ||||||||||||||||||
113 | - | |||||||||||||||||||
114 | - | |||||||||||||||||||
115 | - | |||||||||||||||||||
116 | - | |||||||||||||||||||
117 | - | |||||||||||||||||||
118 | - | |||||||||||||||||||
119 | static int ext_nid_list[] = {172, 171, 0}; | - | ||||||||||||||||||
120 | - | |||||||||||||||||||
121 | static int *ext_nids = ext_nid_list; | - | ||||||||||||||||||
122 | - | |||||||||||||||||||
123 | int | - | ||||||||||||||||||
124 | X509_REQ_extension_nid(int req_nid) | - | ||||||||||||||||||
125 | { | - | ||||||||||||||||||
126 | int i, nid; | - | ||||||||||||||||||
127 | - | |||||||||||||||||||
128 | for (i = 0; ; i++) { | - | ||||||||||||||||||
129 | nid = ext_nids[i]; | - | ||||||||||||||||||
130 | if (nid == 0
| 0 | ||||||||||||||||||
131 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
132 | else if (req_nid == nid
| 0 | ||||||||||||||||||
133 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
134 | } never executed: end of block | 0 | ||||||||||||||||||
135 | } never executed: end of block | 0 | ||||||||||||||||||
136 | - | |||||||||||||||||||
137 | int * | - | ||||||||||||||||||
138 | X509_REQ_get_extension_nids(void) | - | ||||||||||||||||||
139 | { | - | ||||||||||||||||||
140 | return never executed: ext_nids;return ext_nids; never executed: return ext_nids; | 0 | ||||||||||||||||||
141 | } | - | ||||||||||||||||||
142 | - | |||||||||||||||||||
143 | void | - | ||||||||||||||||||
144 | X509_REQ_set_extension_nids(int *nids) | - | ||||||||||||||||||
145 | { | - | ||||||||||||||||||
146 | ext_nids = nids; | - | ||||||||||||||||||
147 | } never executed: end of block | 0 | ||||||||||||||||||
148 | - | |||||||||||||||||||
149 | struct stack_st_X509_EXTENSION * | - | ||||||||||||||||||
150 | X509_REQ_get_extensions(X509_REQ *req) | - | ||||||||||||||||||
151 | { | - | ||||||||||||||||||
152 | X509_ATTRIBUTE *attr; | - | ||||||||||||||||||
153 | ASN1_TYPE *ext = | - | ||||||||||||||||||
154 | ((void *)0) | - | ||||||||||||||||||
155 | ; | - | ||||||||||||||||||
156 | int idx, *pnid; | - | ||||||||||||||||||
157 | const unsigned char *p; | - | ||||||||||||||||||
158 | - | |||||||||||||||||||
159 | if ((
| 0 | ||||||||||||||||||
160 | ((void *)0)
| 0 | ||||||||||||||||||
161 | )
| 0 | ||||||||||||||||||
162 | ((void *)0)
| 0 | ||||||||||||||||||
163 | )
| 0 | ||||||||||||||||||
164 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
165 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
166 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||
167 | for (pnid = ext_nids; *
| 0 | ||||||||||||||||||
168 | idx = X509_REQ_get_attr_by_NID(req, *pnid, -1); | - | ||||||||||||||||||
169 | if (idx == -1
| 0 | ||||||||||||||||||
170 | continue; never executed: continue; | 0 | ||||||||||||||||||
171 | attr = X509_REQ_get_attr(req, idx); | - | ||||||||||||||||||
172 | if (attr->single
| 0 | ||||||||||||||||||
173 | ext = attr->value.single; never executed: ext = attr->value.single; | 0 | ||||||||||||||||||
174 | else if (sk_num(((_STACK*) (1 ? (attr->value.set) : (struct stack_st_ASN1_TYPE*)0)))
| 0 | ||||||||||||||||||
175 | ext = ((ASN1_TYPE *)sk_value(((_STACK*) (1 ? (attr->value.set) : (struct stack_st_ASN1_TYPE*)0)), (0))); never executed: ext = ((ASN1_TYPE *)sk_value(((_STACK*) (1 ? (attr->value.set) : (struct stack_st_ASN1_TYPE*)0)), (0))); | 0 | ||||||||||||||||||
176 | break; never executed: break; | 0 | ||||||||||||||||||
177 | } | - | ||||||||||||||||||
178 | if (!ext
| 0 | ||||||||||||||||||
179 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
180 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
181 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
182 | p = ext->value.sequence->data; | - | ||||||||||||||||||
183 | return never executed: (struct stack_st_X509_EXTENSION *)ASN1_item_d2i(return (struct stack_st_X509_EXTENSION *)ASN1_item_d2i( ((void *)0) , &p, ext->value.sequence->length, &X509_EXTENSIONS_it); never executed: return (struct stack_st_X509_EXTENSION *)ASN1_item_d2i( ((void *)0) , &p, ext->value.sequence->length, &X509_EXTENSIONS_it); | 0 | ||||||||||||||||||
184 | ((void *)0) never executed: return (struct stack_st_X509_EXTENSION *)ASN1_item_d2i( ((void *)0) , &p, ext->value.sequence->length, &X509_EXTENSIONS_it); | 0 | ||||||||||||||||||
185 | , &p, never executed: return (struct stack_st_X509_EXTENSION *)ASN1_item_d2i( ((void *)0) , &p, ext->value.sequence->length, &X509_EXTENSIONS_it); | 0 | ||||||||||||||||||
186 | ext->value.sequence->length, &X509_EXTENSIONS_it); never executed: return (struct stack_st_X509_EXTENSION *)ASN1_item_d2i( ((void *)0) , &p, ext->value.sequence->length, &X509_EXTENSIONS_it); | 0 | ||||||||||||||||||
187 | } | - | ||||||||||||||||||
188 | - | |||||||||||||||||||
189 | - | |||||||||||||||||||
190 | - | |||||||||||||||||||
191 | - | |||||||||||||||||||
192 | - | |||||||||||||||||||
193 | int | - | ||||||||||||||||||
194 | X509_REQ_add_extensions_nid(X509_REQ *req, struct stack_st_X509_EXTENSION *exts, | - | ||||||||||||||||||
195 | int nid) | - | ||||||||||||||||||
196 | { | - | ||||||||||||||||||
197 | ASN1_TYPE *at = | - | ||||||||||||||||||
198 | ((void *)0) | - | ||||||||||||||||||
199 | ; | - | ||||||||||||||||||
200 | X509_ATTRIBUTE *attr = | - | ||||||||||||||||||
201 | ((void *)0) | - | ||||||||||||||||||
202 | ; | - | ||||||||||||||||||
203 | - | |||||||||||||||||||
204 | if (!(at = ASN1_TYPE_new())
| 0 | ||||||||||||||||||
205 | !(at->value.sequence = ASN1_STRING_new())
| 0 | ||||||||||||||||||
206 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
207 | - | |||||||||||||||||||
208 | at->type = 16; | - | ||||||||||||||||||
209 | - | |||||||||||||||||||
210 | at->value.sequence->length = ASN1_item_i2d((ASN1_VALUE *)exts, | - | ||||||||||||||||||
211 | &at->value.sequence->data, &X509_EXTENSIONS_it); | - | ||||||||||||||||||
212 | if (!(attr = X509_ATTRIBUTE_new())
| 0 | ||||||||||||||||||
213 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
214 | if (!(attr->value.set = ((struct stack_st_ASN1_TYPE *)sk_new_null()))
| 0 | ||||||||||||||||||
215 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
216 | if (!sk_push(((_STACK*) (1 ? (attr->value.set) : (struct stack_st_ASN1_TYPE*)0)), ((void*) (1 ? (at) : (ASN1_TYPE*)0)))
| 0 | ||||||||||||||||||
217 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
218 | at = | - | ||||||||||||||||||
219 | ((void *)0) | - | ||||||||||||||||||
220 | ; | - | ||||||||||||||||||
221 | attr->single = 0; | - | ||||||||||||||||||
222 | attr->object = OBJ_nid2obj(nid); | - | ||||||||||||||||||
223 | if (!req->req_info->attributes
| 0 | ||||||||||||||||||
224 | if (!(req->req_info->attributes = ((struct stack_st_X509_ATTRIBUTE *)sk_new_null()))
| 0 | ||||||||||||||||||
225 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
226 | } never executed: end of block | 0 | ||||||||||||||||||
227 | if (!sk_push(((_STACK*) (1 ? (req->req_info->attributes) : (struct stack_st_X509_ATTRIBUTE*)0)), ((void*) (1 ? (attr) : (X509_ATTRIBUTE*)0)))
| 0 | ||||||||||||||||||
228 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
229 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
230 | - | |||||||||||||||||||
231 | err: | - | ||||||||||||||||||
232 | X509_ATTRIBUTE_free(attr); | - | ||||||||||||||||||
233 | ASN1_TYPE_free(at); | - | ||||||||||||||||||
234 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
235 | } | - | ||||||||||||||||||
236 | - | |||||||||||||||||||
237 | - | |||||||||||||||||||
238 | int | - | ||||||||||||||||||
239 | X509_REQ_add_extensions(X509_REQ *req, struct stack_st_X509_EXTENSION *exts) | - | ||||||||||||||||||
240 | { | - | ||||||||||||||||||
241 | return never executed: X509_REQ_add_extensions_nid(req, exts, 172);return X509_REQ_add_extensions_nid(req, exts, 172); never executed: return X509_REQ_add_extensions_nid(req, exts, 172); | 0 | ||||||||||||||||||
242 | } | - | ||||||||||||||||||
243 | - | |||||||||||||||||||
244 | - | |||||||||||||||||||
245 | - | |||||||||||||||||||
246 | int | - | ||||||||||||||||||
247 | X509_REQ_get_attr_count(const X509_REQ *req) | - | ||||||||||||||||||
248 | { | - | ||||||||||||||||||
249 | return never executed: X509at_get_attr_count(req->req_info->attributes);return X509at_get_attr_count(req->req_info->attributes); never executed: return X509at_get_attr_count(req->req_info->attributes); | 0 | ||||||||||||||||||
250 | } | - | ||||||||||||||||||
251 | - | |||||||||||||||||||
252 | int | - | ||||||||||||||||||
253 | X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos) | - | ||||||||||||||||||
254 | { | - | ||||||||||||||||||
255 | return never executed: X509at_get_attr_by_NID(req->req_info->attributes, nid, lastpos);return X509at_get_attr_by_NID(req->req_info->attributes, nid, lastpos); never executed: return X509at_get_attr_by_NID(req->req_info->attributes, nid, lastpos); | 0 | ||||||||||||||||||
256 | } | - | ||||||||||||||||||
257 | - | |||||||||||||||||||
258 | int | - | ||||||||||||||||||
259 | X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, | - | ||||||||||||||||||
260 | int lastpos) | - | ||||||||||||||||||
261 | { | - | ||||||||||||||||||
262 | return never executed: X509at_get_attr_by_OBJ(req->req_info->attributes, obj, lastpos);return X509at_get_attr_by_OBJ(req->req_info->attributes, obj, lastpos); never executed: return X509at_get_attr_by_OBJ(req->req_info->attributes, obj, lastpos); | 0 | ||||||||||||||||||
263 | } | - | ||||||||||||||||||
264 | - | |||||||||||||||||||
265 | X509_ATTRIBUTE * | - | ||||||||||||||||||
266 | X509_REQ_get_attr(const X509_REQ *req, int loc) | - | ||||||||||||||||||
267 | { | - | ||||||||||||||||||
268 | return never executed: X509at_get_attr(req->req_info->attributes, loc);return X509at_get_attr(req->req_info->attributes, loc); never executed: return X509at_get_attr(req->req_info->attributes, loc); | 0 | ||||||||||||||||||
269 | } | - | ||||||||||||||||||
270 | - | |||||||||||||||||||
271 | X509_ATTRIBUTE * | - | ||||||||||||||||||
272 | X509_REQ_delete_attr(X509_REQ *req, int loc) | - | ||||||||||||||||||
273 | { | - | ||||||||||||||||||
274 | return never executed: X509at_delete_attr(req->req_info->attributes, loc);return X509at_delete_attr(req->req_info->attributes, loc); never executed: return X509at_delete_attr(req->req_info->attributes, loc); | 0 | ||||||||||||||||||
275 | } | - | ||||||||||||||||||
276 | - | |||||||||||||||||||
277 | int | - | ||||||||||||||||||
278 | X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr) | - | ||||||||||||||||||
279 | { | - | ||||||||||||||||||
280 | if (X509at_add1_attr(&req->req_info->attributes, attr)
| 0 | ||||||||||||||||||
281 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
282 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
283 | } | - | ||||||||||||||||||
284 | - | |||||||||||||||||||
285 | int | - | ||||||||||||||||||
286 | X509_REQ_add1_attr_by_OBJ(X509_REQ *req, const ASN1_OBJECT *obj, int type, | - | ||||||||||||||||||
287 | const unsigned char *bytes, int len) | - | ||||||||||||||||||
288 | { | - | ||||||||||||||||||
289 | if (X509at_add1_attr_by_OBJ(&req->req_info->attributes, obj,
| 0 | ||||||||||||||||||
290 | type, bytes, len)
| 0 | ||||||||||||||||||
291 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
292 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
293 | } | - | ||||||||||||||||||
294 | - | |||||||||||||||||||
295 | int | - | ||||||||||||||||||
296 | X509_REQ_add1_attr_by_NID(X509_REQ *req, int nid, int type, | - | ||||||||||||||||||
297 | const unsigned char *bytes, int len) | - | ||||||||||||||||||
298 | { | - | ||||||||||||||||||
299 | if (X509at_add1_attr_by_NID(&req->req_info->attributes, nid,
| 0 | ||||||||||||||||||
300 | type, bytes, len)
| 0 | ||||||||||||||||||
301 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
302 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
303 | } | - | ||||||||||||||||||
304 | - | |||||||||||||||||||
305 | int | - | ||||||||||||||||||
306 | X509_REQ_add1_attr_by_txt(X509_REQ *req, const char *attrname, int type, | - | ||||||||||||||||||
307 | const unsigned char *bytes, int len) | - | ||||||||||||||||||
308 | { | - | ||||||||||||||||||
309 | if (X509at_add1_attr_by_txt(&req->req_info->attributes, attrname,
| 0 | ||||||||||||||||||
310 | type, bytes, len)
| 0 | ||||||||||||||||||
311 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
312 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
313 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |