| @@ -1,65 +1,78 @@ | | | @@ -1,65 +1,78 @@ |
1 | $NetBSD: patch-encoding.c,v 1.2 2016/05/24 21:08:21 wiz Exp $ | | 1 | $NetBSD: patch-encoding.c,v 1.3 2020/11/05 17:45:55 adam Exp $ |
2 | | | 2 | |
| | | 3 | Fix building with ICU 68.1. |
3 | Avoid potential undefined behaviour by casting arg to toupper() | | 4 | Avoid potential undefined behaviour by casting arg to toupper() |
4 | to an appropriate value range. | | 5 | to an appropriate value range. |
5 | https://bugzilla.gnome.org/show_bug.cgi?id=766838 | | 6 | https://bugzilla.gnome.org/show_bug.cgi?id=766838 |
6 | | | 7 | |
7 | Also, on NetBSD, add CP1141 encoding alias. | | 8 | Also, on NetBSD, add CP1141 encoding alias. |
8 | | | 9 | |
9 | --- encoding.c.orig 2016-05-23 07:25:25.000000000 +0000 | | 10 | --- encoding.c.orig 2019-10-22 18:46:01.000000000 +0000 |
10 | +++ encoding.c | | 11 | +++ encoding.c |
11 | @@ -1018,7 +1018,7 @@ xmlGetEncodingAlias(const char *alias) { | | 12 | @@ -48,6 +48,11 @@ |
| | | 13 | #include "buf.h" |
| | | 14 | #include "enc.h" |
| | | 15 | |
| | | 16 | +#if !defined(FALSE) |
| | | 17 | +# define FALSE (1 == 0) |
| | | 18 | +# define TRUE (! FALSE) |
| | | 19 | +#endif |
| | | 20 | + |
| | | 21 | static xmlCharEncodingHandlerPtr xmlUTF16LEHandler = NULL; |
| | | 22 | static xmlCharEncodingHandlerPtr xmlUTF16BEHandler = NULL; |
| | | 23 | |
| | | 24 | @@ -1027,7 +1032,7 @@ xmlGetEncodingAlias(const char *alias) { |
12 | return(NULL); | | 25 | return(NULL); |
13 | | | 26 | |
14 | for (i = 0;i < 99;i++) { | | 27 | for (i = 0;i < 99;i++) { |
15 | - upper[i] = toupper(alias[i]); | | 28 | - upper[i] = toupper(alias[i]); |
16 | + upper[i] = toupper((unsigned char)alias[i]); | | 29 | + upper[i] = toupper((unsigned char)alias[i]); |
17 | if (upper[i] == 0) break; | | 30 | if (upper[i] == 0) break; |
18 | } | | 31 | } |
19 | upper[i] = 0; | | 32 | upper[i] = 0; |
20 | @@ -1053,7 +1053,7 @@ xmlAddEncodingAlias(const char *name, co | | 33 | @@ -1062,7 +1067,7 @@ xmlAddEncodingAlias(const char *name, co |
21 | return(-1); | | 34 | return(-1); |
22 | | | 35 | |
23 | for (i = 0;i < 99;i++) { | | 36 | for (i = 0;i < 99;i++) { |
24 | - upper[i] = toupper(alias[i]); | | 37 | - upper[i] = toupper(alias[i]); |
25 | + upper[i] = toupper((unsigned char)alias[i]); | | 38 | + upper[i] = toupper((unsigned char)alias[i]); |
26 | if (upper[i] == 0) break; | | 39 | if (upper[i] == 0) break; |
27 | } | | 40 | } |
28 | upper[i] = 0; | | 41 | upper[i] = 0; |
29 | @@ -1155,7 +1155,7 @@ xmlParseCharEncoding(const char* name) | | 42 | @@ -1164,7 +1169,7 @@ xmlParseCharEncoding(const char* name) |
30 | name = alias; | | 43 | name = alias; |
31 | | | 44 | |
32 | for (i = 0;i < 499;i++) { | | 45 | for (i = 0;i < 499;i++) { |
33 | - upper[i] = toupper(name[i]); | | 46 | - upper[i] = toupper(name[i]); |
34 | + upper[i] = toupper((unsigned char)name[i]); | | 47 | + upper[i] = toupper((unsigned char)name[i]); |
35 | if (upper[i] == 0) break; | | 48 | if (upper[i] == 0) break; |
36 | } | | 49 | } |
37 | upper[i] = 0; | | 50 | upper[i] = 0; |
38 | @@ -1331,7 +1331,7 @@ xmlNewCharEncodingHandler(const char *na | | 51 | @@ -1340,7 +1345,7 @@ xmlNewCharEncodingHandler(const char *na |
39 | return(NULL); | | 52 | return(NULL); |
40 | } | | 53 | } |
41 | for (i = 0;i < 499;i++) { | | 54 | for (i = 0;i < 499;i++) { |
42 | - upper[i] = toupper(name[i]); | | 55 | - upper[i] = toupper(name[i]); |
43 | + upper[i] = toupper((unsigned char)name[i]); | | 56 | + upper[i] = toupper((unsigned char)name[i]); |
44 | if (upper[i] == 0) break; | | 57 | if (upper[i] == 0) break; |
45 | } | | 58 | } |
46 | upper[i] = 0; | | 59 | upper[i] = 0; |
47 | @@ -1433,6 +1433,9 @@ xmlInitCharEncodingHandlers(void) { | | 60 | @@ -1442,6 +1447,9 @@ xmlInitCharEncodingHandlers(void) { |
48 | xmlRegisterCharEncodingHandlersISO8859x (); | | 61 | xmlRegisterCharEncodingHandlersISO8859x (); |
49 | #endif | | 62 | #endif |
50 | #endif | | 63 | #endif |
51 | +#ifdef __NetBSD__ /* XXX needed by selftest */ | | 64 | +#ifdef __NetBSD__ /* XXX needed by selftest */ |
52 | + xmlAddEncodingAlias("CP1141", "IBM-1141"); | | 65 | + xmlAddEncodingAlias("CP1141", "IBM-1141"); |
53 | +#endif | | 66 | +#endif |
54 | | | 67 | |
55 | } | | 68 | } |
56 | | | 69 | |
57 | @@ -1660,7 +1663,7 @@ xmlFindCharEncodingHandler(const char *n | | 70 | @@ -1669,7 +1677,7 @@ xmlFindCharEncodingHandler(const char *n |
58 | * Check first for directly registered encoding names | | 71 | * Check first for directly registered encoding names |
59 | */ | | 72 | */ |
60 | for (i = 0;i < 99;i++) { | | 73 | for (i = 0;i < 99;i++) { |
61 | - upper[i] = toupper(name[i]); | | 74 | - upper[i] = toupper(name[i]); |
62 | + upper[i] = toupper((unsigned char)name[i]); | | 75 | + upper[i] = toupper((unsigned char)name[i]); |
63 | if (upper[i] == 0) break; | | 76 | if (upper[i] == 0) break; |
64 | } | | 77 | } |
65 | upper[i] = 0; | | 78 | upper[i] = 0; |