@@ -36801,19 +36801,22 @@ static int test_wolfSSL_Tls12_Key_Logging_test(void)
3680136801 /* clean up keylog file */
3680236802 ExpectTrue((fp = XFOPEN("./MyKeyLog.txt", "w")) != XBADFILE);
3680336803 if (fp != XBADFILE) {
36804+ XFFLUSH(fp);
3680436805 XFCLOSE(fp);
3680536806 fp = XBADFILE;
3680636807 }
3680736808
3680836809 ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cbf,
3680936810 &server_cbf, NULL), TEST_SUCCESS);
36811+ XSLEEP_MS(100);
3681036812
3681136813 /* check if the keylog file exists */
3681236814
3681336815 char buff[300] = {0};
3681436816 int found = 0;
3681536817
3681636818 ExpectTrue((fp = XFOPEN("./MyKeyLog.txt", "r")) != XBADFILE);
36819+ XFFLUSH(fp); /* Just to make sure any buffers get flushed */
3681736820
3681836821 while (EXPECT_SUCCESS() && XFGETS(buff, (int)sizeof(buff), fp) != NULL) {
3681936822 if (0 == strncmp(buff,"CLIENT_RANDOM ", sizeof("CLIENT_RANDOM ")-1)) {
@@ -39231,12 +39234,12 @@ static int test_wolfSSL_BIO(void)
3923139234 for (i = 0; i < 20; i++) {
3923239235 ExpectIntEQ((int)bufPt[i], i);
3923339236 }
39234- ExpectIntEQ(BIO_nread(bio2, &bufPt, 1), WOLFSSL_BIO_ERROR );
39237+ ExpectIntEQ(BIO_nread(bio2, &bufPt, 1), 0 );
3923539238 ExpectIntEQ(BIO_nread(bio1, &bufPt, (int)BIO_ctrl_pending(bio1)), 8);
3923639239 for (i = 0; i < 8; i++) {
3923739240 ExpectIntEQ((int)bufPt[i], i);
3923839241 }
39239- ExpectIntEQ(BIO_nread(bio1, &bufPt, 1), WOLFSSL_BIO_ERROR );
39242+ ExpectIntEQ(BIO_nread(bio1, &bufPt, 1), 0 );
3924039243 ExpectIntEQ(BIO_ctrl_reset_read_request(bio1), 1);
3924139244
3924239245 /* new pair */
@@ -39245,7 +39248,7 @@ static int test_wolfSSL_BIO(void)
3924539248 bio2 = NULL;
3924639249 ExpectIntEQ(BIO_make_bio_pair(bio1, bio3), WOLFSSL_SUCCESS);
3924739250 ExpectIntEQ((int)BIO_ctrl_pending(bio3), 0);
39248- ExpectIntEQ(BIO_nread(bio3, &bufPt, 10), WOLFSSL_BIO_ERROR );
39251+ ExpectIntEQ(BIO_nread(bio3, &bufPt, 10), 0 );
3924939252
3925039253 /* test wrap around... */
3925139254 ExpectIntEQ(BIO_reset(bio1), 0);
@@ -39293,7 +39296,7 @@ static int test_wolfSSL_BIO(void)
3929339296 /* test reset on data in bio1 write buffer */
3929439297 ExpectIntEQ(BIO_reset(bio1), 0);
3929539298 ExpectIntEQ((int)BIO_ctrl_pending(bio3), 0);
39296- ExpectIntEQ(BIO_nread(bio3, &bufPt, 3), WOLFSSL_BIO_ERROR );
39299+ ExpectIntEQ(BIO_nread(bio3, &bufPt, 3), 0 );
3929739300 ExpectIntEQ(BIO_nwrite(bio1, &bufPt, 20), 20);
3929839301 ExpectIntEQ((int)BIO_ctrl(bio1, BIO_CTRL_INFO, 0, &p), 20);
3929939302 ExpectNotNull(p);
@@ -39408,6 +39411,35 @@ static int test_wolfSSL_BIO(void)
3940839411 return EXPECT_RESULT();
3940939412}
3941039413
39414+ static int test_wolfSSL_BIO_BIO_ring_read(void)
39415+ {
39416+ EXPECT_DECLS;
39417+ #if defined(OPENSSL_ALL)
39418+ BIO* bio1 = NULL;
39419+ BIO* bio2 = NULL;
39420+ byte data[50];
39421+ byte tmp[50];
39422+
39423+ XMEMSET(data, 42, sizeof(data));
39424+
39425+
39426+ ExpectIntEQ(BIO_new_bio_pair(&bio1, sizeof(data), &bio2, sizeof(data)),
39427+ SSL_SUCCESS);
39428+
39429+ ExpectIntEQ(BIO_write(bio1, data, 40), 40);
39430+ ExpectIntEQ(BIO_read(bio1, tmp, 20), -1);
39431+ ExpectIntEQ(BIO_read(bio2, tmp, 20), 20);
39432+ ExpectBufEQ(tmp, data, 20);
39433+ ExpectIntEQ(BIO_write(bio1, data, 20), 20);
39434+ ExpectIntEQ(BIO_read(bio2, tmp, 40), 40);
39435+ ExpectBufEQ(tmp, data, 40);
39436+
39437+ BIO_free(bio1);
39438+ BIO_free(bio2);
39439+ #endif
39440+ return EXPECT_RESULT();
39441+ }
39442+
3941139443#endif /* !NO_BIO */
3941239444
3941339445
@@ -69722,6 +69754,7 @@ TEST_CASE testCases[] = {
6972269754 TEST_DECL(test_wolfSSL_PEM_file_RSAPrivateKey),
6972369755#ifndef NO_BIO
6972469756 TEST_DECL(test_wolfSSL_BIO),
69757+ TEST_DECL(test_wolfSSL_BIO_BIO_ring_read),
6972569758 TEST_DECL(test_wolfSSL_PEM_read_bio),
6972669759 TEST_DECL(test_wolfSSL_PEM_bio_RSAKey),
6972769760 TEST_DECL(test_wolfSSL_PEM_bio_DSAKey),
0 commit comments