git-svn: trunk@2597
Tomasz Kojm authored on 2007/01/08 05:41:01... | ... |
@@ -1,3 +1,8 @@ |
1 |
+Sun Jan 7 21:38:01 CET 2007 (tk) |
|
2 |
+--------------------------------- |
|
3 |
+ * libclamav: avoid unicode name collisions when scanning OLE2 containers, |
|
4 |
+ patch from Edwin |
|
5 |
+ |
|
1 | 6 |
Sun Jan 7 16:46:41 GMT 2007 (njh) |
2 | 7 |
---------------------------------- |
3 | 8 |
* clamav-milter: s/DetectPhishing/PhishingSignatures/g |
... | ... |
@@ -134,7 +134,7 @@ static char *get_property_name(char *name, int size) |
134 | 134 |
return NULL; |
135 | 135 |
} |
136 | 136 |
|
137 |
- newname = (char *) cli_malloc(size*2); |
|
137 |
+ newname = (char *) cli_malloc(size*7); |
|
138 | 138 |
if (!newname) { |
139 | 139 |
return NULL; |
140 | 140 |
} |
... | ... |
@@ -148,6 +148,15 @@ static char *get_property_name(char *name, int size) |
148 | 148 |
newname[j++] = '_'; |
149 | 149 |
newname[j++] = name[i] + '0'; |
150 | 150 |
} |
151 |
+ else { |
|
152 |
+ const uint16_t x = (((uint16_t)name[i]) << 8) | name[i+1]; |
|
153 |
+ newname[j++] = '_'; |
|
154 |
+ newname[j++] = 'a'+((x&0xF)); |
|
155 |
+ newname[j++] = 'a'+((x>>4)&0xF); |
|
156 |
+ newname[j++] = 'a'+((x>>8)&0xF); |
|
157 |
+ newname[j++] = 'a'+((x>>16)&0xF); |
|
158 |
+ newname[j++] = 'a'+((x>>24)&0xF); |
|
159 |
+ } |
|
151 | 160 |
newname[j++] = '_'; |
152 | 161 |
} |
153 | 162 |
} |
... | ... |
@@ -110,7 +110,7 @@ static char *get_unicode_name(char *name, int size, int is_mac) |
110 | 110 |
return NULL; |
111 | 111 |
} |
112 | 112 |
|
113 |
- newname = (char *) cli_malloc(size*4); |
|
113 |
+ newname = (char *) cli_malloc(size*7); |
|
114 | 114 |
if (!newname) { |
115 | 115 |
return NULL; |
116 | 116 |
} |
... | ... |
@@ -123,6 +123,15 @@ static char *get_unicode_name(char *name, int size, int is_mac) |
123 | 123 |
newname[j++] = '_'; |
124 | 124 |
newname[j++] = name[i] + '0'; |
125 | 125 |
} |
126 |
+ else { |
|
127 |
+ const uint16_t x = (((uint16_t)name[i]) << 8) | name[i+1]; |
|
128 |
+ newname[j++] = '_'; |
|
129 |
+ newname[j++] = 'a'+((x&0xF)); |
|
130 |
+ newname[j++] = 'a'+((x>>4)&0xF); |
|
131 |
+ newname[j++] = 'a'+((x>>8)&0xF); |
|
132 |
+ newname[j++] = 'a'+((x>>16)&0xF); |
|
133 |
+ newname[j++] = 'a'+((x>>24)&0xF); |
|
134 |
+ } |
|
126 | 135 |
newname[j++] = '_'; |
127 | 136 |
} |
128 | 137 |
} |