diff --git a/config/rootfiles/common/curl b/config/rootfiles/common/curl
index 01a5fd792..82e3988d6 100644
--- a/config/rootfiles/common/curl
+++ b/config/rootfiles/common/curl
@@ -119,6 +119,7 @@ usr/lib/libcurl.so.4.8.0
 #usr/share/man/man3/CURLOPT_CAINFO.3
 #usr/share/man/man3/CURLOPT_CAINFO_BLOB.3
 #usr/share/man/man3/CURLOPT_CAPATH.3
+#usr/share/man/man3/CURLOPT_CA_CACHE_TIMEOUT.3
 #usr/share/man/man3/CURLOPT_CERTINFO.3
 #usr/share/man/man3/CURLOPT_CHUNK_BGN_FUNCTION.3
 #usr/share/man/man3/CURLOPT_CHUNK_DATA.3
diff --git a/lfs/curl b/lfs/curl
index 33678f795..b76c33410 100644
--- a/lfs/curl
+++ b/lfs/curl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.86.0
+VER        = 7.87.0
 
 THISAPP    = curl-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = a1de7feb229de42bf1deeb5017f97df3b1c10c75fac99bcd0cd21a5dc69b6d8b62520744106d6a113c7a86bd6731dba536a263aabfa22be50d520c43e894acce
+$(DL_FILE)_BLAKE2 = b272ec928c5ef1728434630d8910f58834327a30570913df9d47921a2810d002bd88b81371005197db857d3a53386420c1e28b1e463e6241d46c1e50fbce0c13
 
 install : $(TARGET)
 
@@ -70,6 +70,8 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xf $(DIR_DL)/$(DL_FILE)
+	# Add upstream patche.
+	cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/curl-7.87.0_typecheck_accept_expressions_for_option_info_parameters.patch
 	cd $(DIR_APP) && ./configure \
 		--prefix=/usr \
 		--disable-ipv6 \
diff --git a/src/patches/curl-7.87.0_typecheck_accept_expressions_for_option_info_parameters.patch b/src/patches/curl-7.87.0_typecheck_accept_expressions_for_option_info_parameters.patch
new file mode 100644
index 000000000..63b23e309
--- /dev/null
+++ b/src/patches/curl-7.87.0_typecheck_accept_expressions_for_option_info_parameters.patch
@@ -0,0 +1,42 @@
+From curl commit e2aed00
+
+As expressions can have side effects, evaluate only once.
+
+To enable deprecation reporting only once, get rid of the __typeof__
+use to define the local temporary variable and use the target type
+(CURLoption/CURLINFO). This also avoids multiple reports on type
+conflicts (if some) by the curlcheck_* macros.
+
+Note that CURLOPT_* and CURLINFO_* symbols may be deprecated, but not
+their values: a curl_easy_setopt call with an integer constant as option
+will never report a deprecation.
+
+Reported-by: Thomas Klausner
+Fixes #10148
+Closes #10149
+
+
+--- curl-7.87.0/include/curl/typecheck-gcc.h.orig	2022-12-19 08:48:23.000000000 +0100
++++ curl-7.87.0/include/curl/typecheck-gcc.h	2022-12-26 20:39:29.243819395 +0100
+@@ -42,9 +42,8 @@
+  */
+ #define curl_easy_setopt(handle, option, value)                         \
+   __extension__({                                                       \
+-      CURL_IGNORE_DEPRECATION(__typeof__(option) _curl_opt = option;)   \
++      CURLoption _curl_opt = (option);                                  \
+       if(__builtin_constant_p(_curl_opt)) {                             \
+-        (void) option;                                                  \
+         CURL_IGNORE_DEPRECATION(                                        \
+           if(curlcheck_long_option(_curl_opt))                          \
+             if(!curlcheck_long(value))                                  \
+@@ -120,9 +119,8 @@
+ /* wraps curl_easy_getinfo() with typechecking */
+ #define curl_easy_getinfo(handle, info, arg)                            \
+   __extension__({                                                       \
+-      CURL_IGNORE_DEPRECATION(__typeof__(info) _curl_info = info;)      \
++      CURLINFO _curl_info = (info);                                     \
+       if(__builtin_constant_p(_curl_info)) {                            \
+-        (void) info;                                                    \
+         CURL_IGNORE_DEPRECATION(                                        \
+           if(curlcheck_string_info(_curl_info))                         \
+             if(!curlcheck_arr((arg), char *))                           \
