diff options
author | jsing <> | 2015-08-22 14:20:53 +0000 |
---|---|---|
committer | jsing <> | 2015-08-22 14:20:53 +0000 |
commit | 6828a867a05987f67d2b187e3d4e140a4410a624 (patch) | |
tree | 880a43b220a69d1dcfeaa363f8d5f053dd1efc91 /src/lib | |
parent | 189f85c7c7c7892a00f683ff1b1945c1db9cbc6c (diff) | |
download | openbsd-6828a867a05987f67d2b187e3d4e140a4410a624.tar.gz openbsd-6828a867a05987f67d2b187e3d4e140a4410a624.tar.bz2 openbsd-6828a867a05987f67d2b187e3d4e140a4410a624.zip |
Make tls_read()/tls_write always set outlen to zero on error - this got
broken by r1.4.
Spotted by Marko Kreen.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libtls/tls.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index 246e025e7a..4536bae183 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.12 2015/07/18 22:15:09 bluhm Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.13 2015/08/22 14:20:53 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -290,6 +290,8 @@ tls_read(struct tls *ctx, void *buf, size_t buflen, size_t *outlen) | |||
290 | { | 290 | { |
291 | int ssl_ret; | 291 | int ssl_ret; |
292 | 292 | ||
293 | *outlen = 0; | ||
294 | |||
293 | if (buflen > INT_MAX) { | 295 | if (buflen > INT_MAX) { |
294 | tls_set_error(ctx, "buflen too long"); | 296 | tls_set_error(ctx, "buflen too long"); |
295 | return (-1); | 297 | return (-1); |
@@ -301,8 +303,6 @@ tls_read(struct tls *ctx, void *buf, size_t buflen, size_t *outlen) | |||
301 | return (0); | 303 | return (0); |
302 | } | 304 | } |
303 | 305 | ||
304 | *outlen = 0; | ||
305 | |||
306 | return tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); | 306 | return tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); |
307 | } | 307 | } |
308 | 308 | ||
@@ -311,6 +311,8 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen, size_t *outlen) | |||
311 | { | 311 | { |
312 | int ssl_ret; | 312 | int ssl_ret; |
313 | 313 | ||
314 | *outlen = 0; | ||
315 | |||
314 | if (buflen > INT_MAX) { | 316 | if (buflen > INT_MAX) { |
315 | tls_set_error(ctx, "buflen too long"); | 317 | tls_set_error(ctx, "buflen too long"); |
316 | return (-1); | 318 | return (-1); |
@@ -322,8 +324,6 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen, size_t *outlen) | |||
322 | return (0); | 324 | return (0); |
323 | } | 325 | } |
324 | 326 | ||
325 | *outlen = 0; | ||
326 | |||
327 | return tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); | 327 | return tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); |
328 | } | 328 | } |
329 | 329 | ||