Add version of MBEDTLS_X509_SAFE_SNPRINTF supporting cleanup section

This will be needed in debugging functions that maintain heap
allocated state, and which hence needs to be freed in case an
`snprintf()` call fails.
diff --git a/include/mbedtls/x509.h b/include/mbedtls/x509.h
index f7987a9..583bc12 100644
--- a/include/mbedtls/x509.h
+++ b/include/mbedtls/x509.h
@@ -355,6 +355,18 @@
         p += (size_t) ret;                                  \
     } while( 0 )
 
+#define MBEDTLS_X509_SAFE_SNPRINTF_WITH_CLEANUP             \
+    do {                                                    \
+        if( ret < 0 || (size_t) ret >= n )                  \
+        {                                                   \
+            ret = MBEDTLS_ERR_X509_BUFFER_TOO_SMALL;        \
+            goto cleanup;                                   \
+        }                                                   \
+                                                            \
+        n -= (size_t) ret;                                  \
+        p += (size_t) ret;                                  \
+    } while( 0 )
+
 #ifdef __cplusplus
 }
 #endif