diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index a7f612e40b..d3bb79b3fe 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls.c,v 1.1 2014/10/31 13:46:17 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.2 2014/12/07 15:00:32 bcook Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -56,15 +56,22 @@ tls_error(struct tls *ctx) | |||
| 56 | return ctx->errmsg; | 56 | return ctx->errmsg; |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | void | ||
| 60 | tls_clear_error(struct tls *ctx) | ||
| 61 | { | ||
| 62 | ctx->err = 0; | ||
| 63 | free(ctx->errmsg); | ||
| 64 | ctx->errmsg = NULL; | ||
| 65 | } | ||
| 66 | |||
| 59 | int | 67 | int |
| 60 | tls_set_error(struct tls *ctx, char *fmt, ...) | 68 | tls_set_error(struct tls *ctx, char *fmt, ...) |
| 61 | { | 69 | { |
| 62 | va_list ap; | 70 | va_list ap; |
| 63 | int rv; | 71 | int rv; |
| 64 | 72 | ||
| 73 | tls_clear_error(ctx); | ||
| 65 | ctx->err = errno; | 74 | ctx->err = errno; |
| 66 | free(ctx->errmsg); | ||
| 67 | ctx->errmsg = NULL; | ||
| 68 | 75 | ||
| 69 | va_start(ap, fmt); | 76 | va_start(ap, fmt); |
| 70 | rv = vasprintf(&ctx->errmsg, fmt, ap); | 77 | rv = vasprintf(&ctx->errmsg, fmt, ap); |
