projects
/
python
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9768676
)
Avoid crashing because of an unaligned word access
author
Antoine Pitrou
<solipsis@pitrou.net>
Fri, 11 Nov 2011 01:59:42 +0000
(
02:59
+0100)
committer
Antoine Pitrou
<solipsis@pitrou.net>
Fri, 11 Nov 2011 01:59:42 +0000
(
02:59
+0100)
Objects/unicodeobject.c
patch
|
blob
|
history
diff --git
a/Objects/unicodeobject.c
b/Objects/unicodeobject.c
index 772707de8b60909d9366e035ea2130b30e3d0c30..a4d210bf40ce20721c3c1955e84fb679386dee5a 100644
(file)
--- a/
Objects/unicodeobject.c
+++ b/
Objects/unicodeobject.c
@@
-6252,7
+6252,15
@@
_PyUnicode_DecodeUnicodeInternal(const char *s,
end = s + size;
while (s < end) {
- Py_UCS4 ch = *(Py_UNICODE*)s;
+ Py_UCS4 ch;
+ /* We copy the raw representation one byte at a time because the
+ pointer may be unaligned (see test_codeccallbacks). */
+ ((char *) &ch)[0] = s[0];
+ ((char *) &ch)[1] = s[1];
+#ifdef Py_UNICODE_WIDE
+ ((char *) &ch)[2] = s[2];
+ ((char *) &ch)[3] = s[3];
+#endif
/* We have to sanity check the raw data, otherwise doom looms for
some malformed UCS-4 data. */
if (