Commit | Line | Data |
---|---|---|
8e669ac1 | 1 | /* $Cambridge: exim/src/src/mime.h,v 1.3 2005/02/17 11:58:26 ph10 Exp $ */ |
8523533c TK |
2 | |
3 | /************************************************* | |
4 | * Exim - an Internet mail transport agent * | |
5 | *************************************************/ | |
6 | ||
7 | /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2004 */ | |
8 | /* License: GPL */ | |
9 | ||
10 | #ifdef WITH_CONTENT_SCAN | |
11 | ||
12 | #define MIME_MAX_HEADER_SIZE 8192 | |
13 | #define MIME_MAX_LINE_LENGTH 32768 | |
14 | ||
15 | #define MBC_ATTACHMENT 0 | |
16 | #define MBC_COVERLETTER_ONESHOT 1 | |
17 | #define MBC_COVERLETTER_ALL 2 | |
18 | ||
19 | struct mime_boundary_context | |
20 | { | |
21 | struct mime_boundary_context *parent; | |
22 | unsigned char *boundary; | |
23 | int context; | |
24 | }; | |
25 | ||
26 | typedef struct mime_header { | |
27 | uschar *name; | |
28 | int namelen; | |
29 | void *value; | |
30 | } mime_header; | |
31 | ||
32 | static mime_header mime_header_list[] = { | |
33 | { US"content-type:", 13, &mime_content_type }, | |
34 | { US"content-disposition:", 20, &mime_content_disposition }, | |
35 | { US"content-transfer-encoding:", 26, &mime_content_transfer_encoding }, | |
36 | { US"content-id:", 11, &mime_content_id }, | |
37 | { US"content-description:", 20 , &mime_content_description } | |
38 | }; | |
39 | ||
40 | static int mime_header_list_size = sizeof(mime_header_list)/sizeof(mime_header); | |
41 | ||
42 | ||
43 | ||
44 | typedef struct mime_parameter { | |
45 | uschar *name; | |
46 | int namelen; | |
47 | void *value; | |
48 | } mime_parameter; | |
49 | ||
50 | static mime_parameter mime_parameter_list[] = { | |
51 | { US"name=", 5, &mime_filename }, | |
52 | { US"filename=", 9, &mime_filename }, | |
53 | { US"charset=", 8, &mime_charset }, | |
54 | { US"boundary=", 9, &mime_boundary } | |
55 | }; | |
56 | ||
57 | static int mime_parameter_list_size = sizeof(mime_parameter_list)/sizeof(mime_parameter); | |
58 | ||
59 | ||
60 | /* MIME Anomaly list */ | |
61 | #define MIME_ANOMALY_BROKEN_BASE64 2, "Broken BASE64 encoding detected" | |
62 | #define MIME_ANOMALY_BROKEN_QP 1, "Broken Quoted-Printable encoding detected" | |
63 | ||
64 | ||
65 | /* BASE64 decoder matrix */ | |
66 | static unsigned char mime_b64[256]={ | |
67 | /* 0 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
8e669ac1 | 68 | /* 16 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, |
8523533c TK |
69 | /* 32 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 62, 128, 128, 128, 63, |
70 | /* 48 */ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 128, 128, 128, 255, 128, 128, | |
71 | /* 64 */ 128, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, | |
72 | /* 80 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 128, 128, 128, 128, 128, | |
73 | /* 96 */ 128, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, | |
74 | /* 112 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 128, 128, 128, 128, 128, | |
75 | /* 128 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
76 | /* 144 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
77 | /* 160 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
78 | /* 176 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
79 | /* 192 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
80 | /* 208 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
81 | /* 224 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, | |
8e669ac1 | 82 | /* 240 */ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 |
8523533c TK |
83 | }; |
84 | ||
85 | #endif |