From 431fe8f9e09ad8615c6dbcf8e299a8e8f2dc5ba2 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Sat, 22 Dec 2012 17:04:53 +0900 Subject: [PATCH 1/3] Update changelog --- ChangeLog.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index 833c97c..69adcaa 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -1,6 +1,14 @@ +0.2.4 +======= + +Bugs fixed +---------- + +* Fix SEGV when object_hook or object_pairs_hook raise Exception. (#39) + 0.2.3 ======= -:release date: in development +:release date: 2012-12-11 Changes ------- From 9dc299bd8da75e61f512e6ba50bd06face71f8a0 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Sat, 22 Dec 2012 17:11:30 +0900 Subject: [PATCH 2/3] 0.2.4 --- ChangeLog.rst | 1 + msgpack/_version.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index 69adcaa..f684846 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -1,5 +1,6 @@ 0.2.4 ======= +:release date: 2012-12-22 Bugs fixed ---------- diff --git a/msgpack/_version.py b/msgpack/_version.py index 1bbdf2a..0f5f95a 100644 --- a/msgpack/_version.py +++ b/msgpack/_version.py @@ -1 +1 @@ -version = (0, 2, 3) +version = (0, 2, 4) From 72416e403c6d70b6fbc4ea8e05e1fe7f02a6561a Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Sat, 29 Dec 2012 01:39:59 +0900 Subject: [PATCH 3/3] Fix unpacker doesn't raise exception for invalid input. --- msgpack/_msgpack.pyx | 4 +++- test/test_except.py | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/msgpack/_msgpack.pyx b/msgpack/_msgpack.pyx index 5feba11..78b2aa7 100644 --- a/msgpack/_msgpack.pyx +++ b/msgpack/_msgpack.pyx @@ -210,7 +210,7 @@ cdef extern from "unpack.h": PyObject* key int template_execute(template_context* ctx, const_char_ptr data, - size_t len, size_t* off, bint construct) except -1 + size_t len, size_t* off, bint construct) except? -1 void template_init(template_context* ctx) object template_data(template_context* ctx) @@ -285,6 +285,8 @@ def unpackb(object packed, object object_hook=None, object list_hook=None, if off < buf_len: raise ValueError("Extra data.") return obj + elif ret < 0: + raise ValueError("Unpack failed: error = %d" % (ret,)) else: return None diff --git a/test/test_except.py b/test/test_except.py index e142dd6..35287df 100644 --- a/test/test_except.py +++ b/test/test_except.py @@ -6,6 +6,7 @@ from msgpack import packb, unpackb import datetime + class DummyException(Exception): pass @@ -28,6 +29,11 @@ def test_raise_from_object_hook(): object_pairs_hook=hook) +@raises(ValueError) +def test_invalidvalue(): + unpackb(b'\xd9\x97#DL_') + + if __name__ == '__main__': from nose import main main()