Index: ext/libicpf/src/libicpf/crc32.cpp
===================================================================
diff -u -N -rb337c059691a6940b52a86388ff427c734be8eb6 -r361d7f8b9268e18f39e298ea82425f7ddb24fb43
--- ext/libicpf/src/libicpf/crc32.cpp	(.../crc32.cpp)	(revision b337c059691a6940b52a86388ff427c734be8eb6)
+++ ext/libicpf/src/libicpf/crc32.cpp	(.../crc32.cpp)	(revision 361d7f8b9268e18f39e298ea82425f7ddb24fb43)
@@ -22,6 +22,8 @@
  */
 
 #include "crc32.h"
+#include "err_codes.h"
+#include "exception.h"
 #include <assert.h>
 #ifndef _WIN32
     #include <unistd.h>
@@ -131,6 +133,9 @@
 void crc32_begin(uint_t *puiValue)
 {
 	assert(puiValue != NULL);
+	if(!puiValue)
+		THROW(_t("Invalid argument"), GE_INVALIDARG, 0, 0);
+
 	*puiValue=0xffffffff;
 }
 
@@ -143,6 +148,8 @@
 void crc32_partial(uint_t *puiPrev, const byte_t *pbyData, size_t tLen)
 {
 	assert(puiPrev && pbyData);
+	if(!puiPrev || !pbyData)
+		THROW(_t("Invalid argument"), GE_INVALIDARG, 0, 0);
 
 	for (size_t i=0;i<tLen;i++)
 		__crc32partial(pbyData[i], puiPrev);