summaryrefslogtreecommitdiff
path: root/misc.cpp
diff options
context:
space:
mode:
authorweidai <weidai11@users.noreply.github.com>2003-08-04 19:00:41 +0000
committerweidai <weidai11@users.noreply.github.com>2003-08-04 19:00:41 +0000
commit89862d12200bebff8ba59dcbc19eafdb266d6a0d (patch)
treefb58ae8f9f7914a6a69f7becead49588338698bd /misc.cpp
parent5c3dbb91a256f810d30e0c8940bf3e90aa70a4a2 (diff)
downloadcryptopp-git-89862d12200bebff8ba59dcbc19eafdb266d6a0d.tar.gz
guard against potential integer overflow in allocators
Diffstat (limited to 'misc.cpp')
-rw-r--r--misc.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/misc.cpp b/misc.cpp
index 27a9a354..825b4466 100644
--- a/misc.cpp
+++ b/misc.cpp
@@ -6,6 +6,7 @@
#include "misc.h"
#include "words.h"
+#include <new>
NAMESPACE_BEGIN(CryptoPP)
@@ -75,6 +76,22 @@ unsigned long Crop(unsigned long value, unsigned int size)
return value;
}
+#if !(defined(_MSC_VER) && (_MSC_VER < 1300))
+using std::new_handler;
+#endif
+
+void CallNewHandler()
+{
+ new_handler newHandler = set_new_handler(NULL);
+ if (newHandler)
+ set_new_handler(newHandler);
+
+ if (newHandler)
+ newHandler();
+ else
+ throw std::bad_alloc();
+}
+
NAMESPACE_END
#endif