diff --git a/CryptoPkg/Library/OpensslLib/openssl/crypto/bio/bss_fd.c b/CryptoPkg/Library/OpensslLib/openssl/crypto/bio/bss_fd.c index 2bd3517..a886655 100644 --- a/CryptoPkg/Library/OpensslLib/openssl/crypto/bio/bss_fd.c +++ b/CryptoPkg/Library/OpensslLib/openssl/crypto/bio/bss_fd.c @@ -204,8 +204,10 @@ static int fd_gets(BIO *bp, char *buf, int size) char *ptr = buf; char *end = buf + size - 1; - while ((ptr < end) && (fd_read(bp, ptr, 1) > 0) && (ptr[0] != '\n')) - ptr++; + while (ptr < end && fd_read(bp, ptr, 1) > 0) { + if (*ptr++ == '\n') + break; + } ptr[0] = '\0'; diff --git a/CryptoPkg/Library/OpensslLib/openssl/doc/crypto/BIO_read.pod b/CryptoPkg/Library/OpensslLib/openssl/doc/crypto/BIO_read.pod index 45871c1..fe70e9f 100644 --- a/CryptoPkg/Library/OpensslLib/openssl/doc/crypto/BIO_read.pod +++ b/CryptoPkg/Library/OpensslLib/openssl/doc/crypto/BIO_read.pod @@ -23,7 +23,8 @@ in B. Usually this operation will attempt to read a line of data from the BIO of maximum length B. There are exceptions to this, however; for example, BIO_gets() on a digest BIO will calculate and return the digest and other BIOs may not support BIO_gets() at all. -The returned string is always NUL-terminated. +The returned string is always NUL-terminated and the '\n' is preserved +if present in the input data. BIO_write() attempts to write B bytes from B to BIO B. -- 2.17.0