Fix incorrect checks of cn_cbor_encoder_write result. (#52)

cn_cbor_encoder_write returns -1 on error. In several cases any
non-zero result was treated as success. In two cases, a -1 result
would be converted to size_t and returned when a 0 result should
be returned.
diff --git a/src/Cose.c b/src/Cose.c
index f0552ba..b82af84 100644
--- a/src/Cose.c
+++ b/src/Cose.c
@@ -207,7 +207,8 @@
 size_t COSE_Encode(HCOSE msg, byte * rgb, size_t ib, size_t cb)
 {
 	if (rgb == NULL) return cn_cbor_encode_size(((COSE *)msg)->m_cbor) + ib;
-	return cn_cbor_encoder_write(rgb, ib, cb, ((COSE*)msg)->m_cbor);
+	ssize_t size = cn_cbor_encoder_write(rgb, ib, cb, ((COSE*)msg)->m_cbor);
+	return size >= 0 ? size : 0;
 }
 
 
diff --git a/src/Recipient.c b/src/Recipient.c
index 8dcbf33..993eb0e 100644
--- a/src/Recipient.c
+++ b/src/Recipient.c
@@ -1341,7 +1341,7 @@
 	CHECK_CONDITION(cbContext > 0, COSE_ERR_CBOR);
 	pbContext = (byte *)COSE_CALLOC(cbContext, 1, context);
 	CHECK_CONDITION(pbContext != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbContext, 0, cbContext, pArray), COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbContext, 0, cbContext, pArray) == cbContext, COSE_ERR_CBOR);
 
 	*ppbContext = pbContext;
 	*pcbContext = cbContext;
diff --git a/src/Sign0.c b/src/Sign0.c
index ca3b442..6f44ebb 100644
--- a/src/Sign0.c
+++ b/src/Sign0.c
@@ -291,7 +291,7 @@
 	CHECK_CONDITION(cbToSign > 0, COSE_ERR_CBOR);
 	pbToSign = (byte *)COSE_CALLOC(cbToSign, 1, context);
 	CHECK_CONDITION(pbToSign != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray), COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) == cbToSign, COSE_ERR_CBOR);
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
diff --git a/src/SignerInfo.c b/src/SignerInfo.c
index ddc6811..04c8754 100644
--- a/src/SignerInfo.c
+++ b/src/SignerInfo.c
@@ -149,7 +149,7 @@
 	CHECK_CONDITION(cbToSign > 0, COSE_ERR_CBOR);
 	pbToSign = (byte *)COSE_CALLOC(cbToSign, 1, context);
 	CHECK_CONDITION(pbToSign != NULL, COSE_ERR_OUT_OF_MEMORY);
-	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray), COSE_ERR_CBOR);
+	CHECK_CONDITION(cn_cbor_encoder_write(pbToSign, 0, cbToSign, pArray) == cbToSign, COSE_ERR_CBOR);
 
 	*ppbToSign = pbToSign;
 	*pcbToSign = cbToSign;
diff --git a/src/cbor.c b/src/cbor.c
index b38a336..68fb14e 100644
--- a/src/cbor.c
+++ b/src/cbor.c
@@ -189,5 +189,6 @@
 
 size_t cn_cbor_encode_size(cn_cbor * object)
 {
-	return cn_cbor_encoder_write(RgbDontUse4, 0, sizeof(RgbDontUse4), object);
+	ssize_t size = cn_cbor_encoder_write(RgbDontUse4, 0, sizeof(RgbDontUse4), object);
+	return size >= 0 ? size : 0;
 }