Added guard code to avoid issue when decoding PEM but not keeping data.
[BearSSL] / src / codec / pemdec.c
index 51e610b..b599f84 100644 (file)
@@ -69,7 +69,7 @@ void br_pem_decoder_run(void *t0ctx);
 
 #include "inner.h"
 
 
 #include "inner.h"
 
-#define CTX   ((br_pem_decoder_context *)((unsigned char *)t0ctx - offsetof(br_pem_decoder_context, cpu)))
+#define CTX   ((br_pem_decoder_context *)(void *)((unsigned char *)t0ctx - offsetof(br_pem_decoder_context, cpu)))
 
 /* see bearssl_pem.h */
 void
 
 /* see bearssl_pem.h */
 void
@@ -441,7 +441,9 @@ br_pem_decoder_run(void *t0ctx)
                                /* flush-buf */
 
        if (CTX->ptr > 0) {
                                /* flush-buf */
 
        if (CTX->ptr > 0) {
-               CTX->dest(CTX->dest_ctx, CTX->buf, CTX->ptr);
+               if (CTX->dest) {
+                       CTX->dest(CTX->dest_ctx, CTX->buf, CTX->ptr);
+               }
                CTX->ptr = 0;
        }
 
                CTX->ptr = 0;
        }