Option to disable decoding of tags not commonly used to reduce object code (#74)
Disables UUID, Regex, MIME, B64, B64URL. They can still be decoded if they are untagged strings.
Co-authored-by: Laurence Lundblade <lgl@securitytheory.com>
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index fc9cf2b..ebcbc97 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -2099,6 +2099,7 @@
#endif /* QCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA */
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
/**
* @brief Decode the MIME type tag
*
@@ -2120,6 +2121,7 @@
return QCBOR_SUCCESS;
}
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
/**
@@ -2142,10 +2144,12 @@
{CBOR_TAG_NEG_BIGNUM, QCBOR_TYPE_NEGBIGNUM | IS_BYTE_STRING_BIT},
{CBOR_TAG_CBOR, QBCOR_TYPE_WRAPPED_CBOR | IS_BYTE_STRING_BIT},
{CBOR_TAG_URI, QCBOR_TYPE_URI},
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
{CBOR_TAG_B64URL, QCBOR_TYPE_BASE64URL},
{CBOR_TAG_B64, QCBOR_TYPE_BASE64},
{CBOR_TAG_REGEX, QCBOR_TYPE_REGEX},
{CBOR_TAG_BIN_UUID, QCBOR_TYPE_UUID | IS_BYTE_STRING_BIT},
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
{CBOR_TAG_CBOR_SEQUENCE, QBCOR_TYPE_WRAPPED_CBOR_SEQUENCE | IS_BYTE_STRING_BIT},
{CBOR_TAG_INVALID16, QCBOR_TYPE_NONE}
};
@@ -2254,10 +2258,11 @@
uTagToProcess == CBOR_TAG_BIGFLOAT) {
uReturn = QCBORDecode_MantissaAndExponent(pMe, pDecodedItem);
#endif /* QCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA */
-
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
} else if(uTagToProcess == CBOR_TAG_MIME ||
uTagToProcess == CBOR_TAG_BINARY_MIME) {
uReturn = DecodeMIME(pDecodedItem);
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
} else {
/* See if it is a pass-through byte/text string tag; process if so */