diff -up ./src/coolkey/object.cpp.cac-1 ./src/coolkey/object.cpp --- ./src/coolkey/object.cpp.cac-1 2010-06-23 04:46:35.726198827 -0700 +++ ./src/coolkey/object.cpp 2010-06-23 04:47:28.073827862 -0700 @@ -505,6 +505,10 @@ dataStart(const CKYByte *buf, unsigned i unsigned char tag; unsigned int used_length= 0; + if(!buf) { + return NULL; + } + tag = buf[used_length++]; /* blow out when we come to the end */ diff -up ./src/coolkey/slot.cpp.cac-1 ./src/coolkey/slot.cpp --- ./src/coolkey/slot.cpp.cac-1 2010-06-23 04:46:22.718371631 -0700 +++ ./src/coolkey/slot.cpp 2010-06-23 04:57:04.417774402 -0700 @@ -2192,6 +2192,10 @@ Slot::readCACCertificateFirst(CKYBuffer if (throwException && (status != CKYSUCCESS)) { handleConnectionError(); } + + if(CKYBuffer_Size(cert) == 0) { + handleConnectionError(); + } return status; }