diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls_util.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/lib/libtls/tls_util.c b/src/lib/libtls/tls_util.c index aaa3eef49f..f9df287ca8 100644 --- a/src/lib/libtls/tls_util.c +++ b/src/lib/libtls/tls_util.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls_util.c,v 1.9 2017/06/22 18:03:57 jsing Exp $ */ | 1 | /* $OpenBSD: tls_util.c,v 1.10 2018/02/05 00:52:24 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org> | 4 | * Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org> |
| @@ -43,7 +43,7 @@ tls_host_port(const char *hostport, char **host, char **port) | |||
| 43 | *port = NULL; | 43 | *port = NULL; |
| 44 | 44 | ||
| 45 | if ((s = strdup(hostport)) == NULL) | 45 | if ((s = strdup(hostport)) == NULL) |
| 46 | goto fail; | 46 | goto err; |
| 47 | 47 | ||
| 48 | h = p = s; | 48 | h = p = s; |
| 49 | 49 | ||
| @@ -66,14 +66,14 @@ tls_host_port(const char *hostport, char **host, char **port) | |||
| 66 | *p++ = '\0'; | 66 | *p++ = '\0'; |
| 67 | 67 | ||
| 68 | if (asprintf(host, "%s", h) == -1) | 68 | if (asprintf(host, "%s", h) == -1) |
| 69 | goto fail; | 69 | goto err; |
| 70 | if (asprintf(port, "%s", p) == -1) | 70 | if (asprintf(port, "%s", p) == -1) |
| 71 | goto fail; | 71 | goto err; |
| 72 | 72 | ||
| 73 | rv = 0; | 73 | rv = 0; |
| 74 | goto done; | 74 | goto done; |
| 75 | 75 | ||
| 76 | fail: | 76 | err: |
| 77 | free(*host); | 77 | free(*host); |
| 78 | *host = NULL; | 78 | *host = NULL; |
| 79 | free(*port); | 79 | free(*port); |
| @@ -126,38 +126,38 @@ tls_load_file(const char *name, size_t *len, char *password) | |||
| 126 | /* Just load the file into memory without decryption */ | 126 | /* Just load the file into memory without decryption */ |
| 127 | if (password == NULL) { | 127 | if (password == NULL) { |
| 128 | if (fstat(fd, &st) != 0) | 128 | if (fstat(fd, &st) != 0) |
| 129 | goto fail; | 129 | goto err; |
| 130 | if (st.st_size < 0) | 130 | if (st.st_size < 0) |
| 131 | goto fail; | 131 | goto err; |
| 132 | size = (size_t)st.st_size; | 132 | size = (size_t)st.st_size; |
| 133 | if ((buf = malloc(size)) == NULL) | 133 | if ((buf = malloc(size)) == NULL) |
| 134 | goto fail; | 134 | goto err; |
| 135 | n = read(fd, buf, size); | 135 | n = read(fd, buf, size); |
| 136 | if (n < 0 || (size_t)n != size) | 136 | if (n < 0 || (size_t)n != size) |
| 137 | goto fail; | 137 | goto err; |
| 138 | close(fd); | 138 | close(fd); |
| 139 | goto done; | 139 | goto done; |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | /* Or read the (possibly) encrypted key from file */ | 142 | /* Or read the (possibly) encrypted key from file */ |
| 143 | if ((fp = fdopen(fd, "r")) == NULL) | 143 | if ((fp = fdopen(fd, "r")) == NULL) |
| 144 | goto fail; | 144 | goto err; |
| 145 | fd = -1; | 145 | fd = -1; |
| 146 | 146 | ||
| 147 | key = PEM_read_PrivateKey(fp, NULL, tls_password_cb, password); | 147 | key = PEM_read_PrivateKey(fp, NULL, tls_password_cb, password); |
| 148 | fclose(fp); | 148 | fclose(fp); |
| 149 | if (key == NULL) | 149 | if (key == NULL) |
| 150 | goto fail; | 150 | goto err; |
| 151 | 151 | ||
| 152 | /* Write unencrypted key to memory buffer */ | 152 | /* Write unencrypted key to memory buffer */ |
| 153 | if ((bio = BIO_new(BIO_s_mem())) == NULL) | 153 | if ((bio = BIO_new(BIO_s_mem())) == NULL) |
| 154 | goto fail; | 154 | goto err; |
| 155 | if (!PEM_write_bio_PrivateKey(bio, key, NULL, NULL, 0, NULL, NULL)) | 155 | if (!PEM_write_bio_PrivateKey(bio, key, NULL, NULL, 0, NULL, NULL)) |
| 156 | goto fail; | 156 | goto err; |
| 157 | if ((size = BIO_get_mem_data(bio, &data)) <= 0) | 157 | if ((size = BIO_get_mem_data(bio, &data)) <= 0) |
| 158 | goto fail; | 158 | goto err; |
| 159 | if ((buf = malloc(size)) == NULL) | 159 | if ((buf = malloc(size)) == NULL) |
| 160 | goto fail; | 160 | goto err; |
| 161 | memcpy(buf, data, size); | 161 | memcpy(buf, data, size); |
| 162 | 162 | ||
| 163 | BIO_free_all(bio); | 163 | BIO_free_all(bio); |
| @@ -167,7 +167,7 @@ tls_load_file(const char *name, size_t *len, char *password) | |||
| 167 | *len = size; | 167 | *len = size; |
| 168 | return (buf); | 168 | return (buf); |
| 169 | 169 | ||
| 170 | fail: | 170 | err: |
| 171 | if (fd != -1) | 171 | if (fd != -1) |
| 172 | close(fd); | 172 | close(fd); |
| 173 | freezero(buf, size); | 173 | freezero(buf, size); |
