summaryrefslogtreecommitdiff
path: root/0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch
diff options
context:
space:
mode:
Diffstat (limited to '0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch')
-rw-r--r--0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch139
1 files changed, 139 insertions, 0 deletions
diff --git a/0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch b/0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch
new file mode 100644
index 0000000..b32c5bd
--- /dev/null
+++ b/0029-CryptoPkg-CrtLib-add-access-open-read-write-close-sy.patch
@@ -0,0 +1,139 @@
+From 168cfe83b250d3166817549c1e96e6b1f02bcab4 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Mon, 28 Aug 2023 13:27:09 +0200
+Subject: [PATCH] CryptoPkg/CrtLib: add access/open/read/write/close syscalls
+
+Needed by rhel downstream openssl patches, they use unix syscalls
+for file access (instead of fopen + friends like the rest of the
+code base). No actual file access is needed for edk2, so just
+add stubs to make linking work.
+
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+---
+ .../Library/BaseCryptLib/SysCall/CrtWrapper.c | 46 +++++++++++++++++++
+ CryptoPkg/Library/Include/CrtLibSupport.h | 41 +++++++++++++++++
+ 2 files changed, 87 insertions(+)
+
+diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c b/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
+index 37cdecc9bd..dfdb635536 100644
+--- a/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
++++ b/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
+@@ -550,6 +550,52 @@ fread (
+ return 0;
+ }
+
++int
++access(
++ const char*,
++ int
++ )
++{
++ return -1;
++}
++
++int
++open (
++ const char *,
++ int
++ )
++{
++ return -1;
++}
++
++ssize_t
++read (
++ int,
++ void*,
++ size_t
++ )
++{
++ return -1;
++}
++
++ssize_t
++write (
++ int,
++ const void*,
++ size_t
++ )
++{
++ return -1;
++}
++
++int
++close (
++ int
++ )
++{
++ return -1;
++}
++
+ uid_t
+ getuid (
+ void
+diff --git a/CryptoPkg/Library/Include/CrtLibSupport.h b/CryptoPkg/Library/Include/CrtLibSupport.h
+index f36fe08f0c..7d98496af8 100644
+--- a/CryptoPkg/Library/Include/CrtLibSupport.h
++++ b/CryptoPkg/Library/Include/CrtLibSupport.h
+@@ -78,6 +78,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
+ //
+ // Definitions for global constants used by CRT library routines
+ //
++#define EINTR 4
+ #define EINVAL 22 /* Invalid argument */
+ #define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
+ #define INT_MAX 0x7FFFFFFF /* Maximum (signed) int value */
+@@ -102,6 +103,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
+ #define NS_INADDRSZ 4 /*%< IPv4 T_A */
+ #define NS_IN6ADDRSZ 16 /*%< IPv6 T_AAAA */
+
++#define O_RDONLY 00000000
++#define O_WRONLY 00000001
++#define O_RDWR 00000002
++
++#define R_OK 4
++#define W_OK 2
++#define X_OK 1
++#define F_OK 0
++
+ //
+ // Basic types mapping
+ //
+@@ -324,6 +334,37 @@ fprintf (
+ ...
+ );
+
++int
++access(
++ const char*,
++ int
++ );
++
++int
++open (
++ const char *,
++ int
++ );
++
++ssize_t
++read (
++ int,
++ void*,
++ size_t
++ );
++
++ssize_t
++write (
++ int,
++ const void*,
++ size_t
++ );
++
++int
++close (
++ int
++ );
++
+ time_t
+ time (
+ time_t *