diff options
Diffstat (limited to 'src/clients/kvno/kvno.c')
-rw-r--r-- | src/clients/kvno/kvno.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/clients/kvno/kvno.c b/src/clients/kvno/kvno.c index 7f8667c..03f72f5 100644 --- a/src/clients/kvno/kvno.c +++ b/src/clients/kvno/kvno.c @@ -222,7 +222,7 @@ read_pem_file(char *file_name, krb5_data *der_out) FILE *fp = NULL; const char *begin_line = "-----BEGIN CERTIFICATE-----"; const char *end_line = "-----END ", *line; - char linebuf[256]; + char linebuf[256], *b64; struct k5buf buf = EMPTY_K5BUF; uint8_t *der_cert; size_t dlen; @@ -267,7 +267,12 @@ read_pem_file(char *file_name, krb5_data *der_out) k5_buf_add(&buf, line); } - der_cert = k5_base64_decode(buf.data, &dlen); + b64 = k5_buf_cstring(&buf); + if (b64 == NULL) { + ret = ENOMEM; + goto cleanup; + } + der_cert = k5_base64_decode(b64, &dlen); if (der_cert == NULL) { ret = EINVAL; k5_setmsg(context, ret, _("Invalid base64")); |