Author: mattip <[email protected]>
Branch:
Changeset: r72379:f3d274416c97
Date: 2014-07-08 09:22 +1000
http://bitbucket.org/pypy/pypy/changeset/f3d274416c97/
Log: fix unsafe FormatMessage call (windows)
diff --git a/rpython/rlib/rwin32.py b/rpython/rlib/rwin32.py
--- a/rpython/rlib/rwin32.py
+++ b/rpython/rlib/rwin32.py
@@ -79,7 +79,7 @@
"MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)")
defines = """FORMAT_MESSAGE_ALLOCATE_BUFFER FORMAT_MESSAGE_FROM_SYSTEM
- MAX_PATH _MAX_ENV
+ MAX_PATH _MAX_ENV FORMAT_MESSAGE_IGNORE_INSERTS
WAIT_OBJECT_0 WAIT_TIMEOUT INFINITE
ERROR_INVALID_HANDLE
DELETE READ_CONTROL SYNCHRONIZE WRITE_DAC
@@ -226,7 +226,8 @@
buf[0] = lltype.nullptr(rffi.CCHARP.TO)
try:
msglen = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM,
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
None,
rffi.cast(DWORD, code),
DEFAULT_LANGUAGE,
diff --git a/rpython/rlib/test/test_rwin32.py b/rpython/rlib/test/test_rwin32.py
--- a/rpython/rlib/test/test_rwin32.py
+++ b/rpython/rlib/test/test_rwin32.py
@@ -58,3 +58,9 @@
for key, value in env.iteritems():
assert type(key) is unicode
assert type(value) is unicode
+
+def test_formaterror():
+ # choose one with formatting characters and newlines
+ msg = rwin32.FormatError(34)
+ assert '%2' in msg
+
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit