summaryrefslogtreecommitdiff
path: root/dev-libs/libwbxml/files/libwbxml-0.11.7-expat-compat-fixes.patch
blob: 00479c7f6437a1d855bcdb339cc8d768cf26f488 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
https://github.com/libwbxml/libwbxml/commit/4664d476fb5029073012b91880ce2a9bbc0b4725
https://github.com/libwbxml/libwbxml/commit/4425e80f74b93a590b2c99638b9c5095e6a66244

From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= <slavek.banko@axis.cz>
Date: Thu, 24 Feb 2022 20:30:18 +0100
Subject: [PATCH] Allow the use of a namespace separator specified by the
 constant instead of hardcoded colon in the SyncML related code.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
--- a/src/wbxml_internals.h
+++ b/src/wbxml_internals.h
@@ -156,7 +156,9 @@ typedef enum WBXMLWVDataType_e {
 #pragma warning(error: 4761) /**< integral size mismatch in argument : conversion supplied */
 #endif /* WIN32 */
 
-#define WBXML_NAMESPACE_SEPARATOR ':'
+/* Separator must be the same in both cases - once as a char, once as a string */
+#define WBXML_NAMESPACE_SEPARATOR     ':'
+#define WBXML_NAMESPACE_SEPARATOR_STR ":"
 
 /** @} */
 
--- a/src/wbxml_tree_clb_xml.c
+++ b/src/wbxml_tree_clb_xml.c
@@ -33,6 +33,7 @@
  * @brief WBXML Tree Callbacks for XML Parser (Expat)
  */
 
+#include "wbxml_internals.h"
 #include "wbxml_config_internals.h"
 
 #if defined( HAVE_EXPAT )
@@ -160,8 +161,8 @@ void wbxml_tree_clb_xml_start_element(void           *ctx,
      * potentially embedded documents.
      */
     if ((
-         (WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0) ||
-         (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0)
+         (WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0) ||
+         (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0)
         )&&
         (tree_ctx->current != NULL))
     {
@@ -255,8 +256,8 @@ void wbxml_tree_clb_xml_end_element(void           *ctx,
             /* End of skipped node */
 
 #if defined( WBXML_SUPPORT_SYNCML )
-            if (WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0 ||
-	        WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0) {
+            if (WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0 ||
+	        WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0) {
 		/* definitions first ... or some compilers don't like it */
                 WBXMLBuffer *embed_doc = NULL;
                 WBXMLTree *tree = NULL;
@@ -277,10 +278,10 @@ void wbxml_tree_clb_xml_end_element(void           *ctx,
                 }
 
                 /* Check Buffer Creation and add the closing tag */
-		if ((WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0 &&
+		if ((WBXML_STRCMP(localName, "syncml:devinf" WBXML_NAMESPACE_SEPARATOR_STR "DevInf") == 0 &&
 		     (!wbxml_buffer_append_cstr(embed_doc, "</DevInf>")))
                     ||
-		    (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0 &&
+		    (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0 &&
 		     (!wbxml_buffer_append_cstr(embed_doc, "</MgmtTree>"))))
                 {
                     tree_ctx->error = WBXML_ERROR_NOT_ENOUGH_MEMORY;
@@ -289,7 +290,7 @@ void wbxml_tree_clb_xml_end_element(void           *ctx,
                 }
 
                 /* Add doctype to give the XML parser a chance */
-		if (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0 &&
+		if (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0 &&
 		    tree_ctx->tree->lang->langID != WBXML_LANG_SYNCML_SYNCML12)
 		{
                     tree_ctx->error = WBXML_ERROR_UNKNOWN_XML_LANGUAGE;
@@ -305,7 +306,7 @@ void wbxml_tree_clb_xml_end_element(void           *ctx,
 				lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DEVINF11);
 				break;
 			case WBXML_LANG_SYNCML_SYNCML12:
-				if (WBXML_STRCMP(localName, "syncml:dmddf1.2:MgmtTree") == 0) {
+				if (WBXML_STRCMP(localName, "syncml:dmddf1.2" WBXML_NAMESPACE_SEPARATOR_STR "MgmtTree") == 0) {
 					lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DMDDF12);
 				} else {
 					lang = wbxml_tables_get_table(WBXML_LANG_SYNCML_DEVINF12);

From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= <slavek.banko@axis.cz>
Date: Thu, 24 Feb 2022 20:31:15 +0100
Subject: [PATCH] Change the default internal namespace separator from the
 colon to the pipe.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This solves compatibility with libexpat >= 2.4.5
after fix the security problem CVE-2022-25236.

This resolves issue #76.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
--- a/src/wbxml_internals.h
+++ b/src/wbxml_internals.h
@@ -157,8 +157,8 @@ typedef enum WBXMLWVDataType_e {
 #endif /* WIN32 */
 
 /* Separator must be the same in both cases - once as a char, once as a string */
-#define WBXML_NAMESPACE_SEPARATOR     ':'
-#define WBXML_NAMESPACE_SEPARATOR_STR ":"
+#define WBXML_NAMESPACE_SEPARATOR     '|'
+#define WBXML_NAMESPACE_SEPARATOR_STR "|"
 
 /** @} */