summaryrefslogtreecommitdiff
path: root/ext/openssl
diff options
context:
space:
mode:
authorJoe Cai <joe.cai@bigcommerce.com>2020-04-20 09:03:11 +1000
committerNikita Popov <nikita.ppv@gmail.com>2020-04-20 10:25:54 +0200
commit94e09bfe558656d3f1470dc960b900a951b0dffc (patch)
tree672e81c0aacc70987f934e34e7857a0788b1962c /ext/openssl
parentd31ccb5fc8a0f6f5fded085ee170c8bd99eb83e7 (diff)
downloadphp-git-94e09bfe558656d3f1470dc960b900a951b0dffc.tar.gz
Fix #79497: Fix php_openssl_subtract_timeval()
I stumbled upon this while debugging a strange issue with stream_socket_client() where it randomly throws out errors when the connection timeout is set to below 1s. The logic to calculate time difference in php_openssl_subtract_timeval() is wrong when a.tv_usec < b.tv_usec, causing connection errors before the timeout is reached.
Diffstat (limited to 'ext/openssl')
-rw-r--r--ext/openssl/xp_ssl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 88d86c2096..ea29a34058 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -2209,8 +2209,8 @@ static struct timeval php_openssl_subtract_timeval(struct timeval a, struct time
difference.tv_usec = a.tv_usec - b.tv_usec;
if (a.tv_usec < b.tv_usec) {
- b.tv_sec -= 1L;
- b.tv_usec += 1000000L;
+ difference.tv_sec -= 1L;
+ difference.tv_usec += 1000000L;
}
return difference;