summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2015-08-22 14:20:53 +0000
committerjsing <>2015-08-22 14:20:53 +0000
commit6828a867a05987f67d2b187e3d4e140a4410a624 (patch)
tree880a43b220a69d1dcfeaa363f8d5f053dd1efc91 /src/lib
parent189f85c7c7c7892a00f683ff1b1945c1db9cbc6c (diff)
downloadopenbsd-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.c10
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