Skip to content

Commit 4734c52

Browse files
committed
Fix return value of openssl_read (infinite loop)
openssl_read should return -1 in case of error. SSL_read returns values <= 0 in case of error. A return value of 0 can lead to an infinite loop, so the return value of ssl_set_error will be returned if SSL_read is not successful (analog to openssl_write).
1 parent cb2dfa4 commit 4734c52

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/openssl_stream.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,8 +522,9 @@ ssize_t openssl_read(git_stream *stream, void *data, size_t len)
522522
openssl_stream *st = (openssl_stream *) stream;
523523
int ret;
524524

525-
if ((ret = SSL_read(st->ssl, data, len)) <= 0)
526-
ssl_set_error(st->ssl, ret);
525+
if ((ret = SSL_read(st->ssl, data, len)) <= 0) {
526+
return ssl_set_error(st->ssl, ret);
527+
}
527528

528529
return ret;
529530
}

0 commit comments

Comments
 (0)