From 503cb27740c67fa8140c8f21e20b06a02819b8e9 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Tue, 4 Jan 2022 17:17:56 +1100 Subject: [PATCH] base: add heim_data_t support to heim_audit_trail() Allow heim_audit_trail() to log heim_data_t types. --- lib/base/log.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/base/log.c b/lib/base/log.c index 2bac772f8..ded4bbe76 100644 --- a/lib/base/log.c +++ b/lib/base/log.c @@ -40,6 +40,7 @@ #include #include #include +#include struct heim_log_facility_internal { int min; @@ -976,6 +977,7 @@ audit_trail_iterator(heim_object_t key, heim_object_t value, void *arg) struct heim_audit_kv_buf *kvb = arg; char num[32]; const char *k = heim_string_get_utf8(key), *v = NULL; + char *b64 = NULL; if (k == NULL || *k == '#') /* # keys are hidden */ return; @@ -1002,6 +1004,12 @@ audit_trail_iterator(heim_object_t key, heim_object_t value, void *arg) heim_array_iterate_f(value, kvb, audit_trail_iterator_array); kvb->iter = NULL; break; + case HEIM_TID_DATA: { + const heim_octet_string *data = heim_data_get_data(value); + if (rk_base64_encode(data->data, data->length, &b64) >= 0) + v = b64; + break; + } default: break; } @@ -1017,6 +1025,8 @@ audit_trail_iterator(heim_object_t key, heim_object_t value, void *arg) kvb->buf[kvb->pos++] = '='; for (; *v && kvb->pos < sizeof(kvb->buf) - 1; kvb->pos++) kvb->buf[kvb->pos] = *v++; + + free(b64); } void