[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/6] bootstrap: Add gnulib's base64 module
From: |
Patrick Steinhardt |
Subject: |
[PATCH 3/6] bootstrap: Add gnulib's base64 module |
Date: |
Sat, 2 Nov 2019 19:06:52 +0100 |
The upcoming support for LUKS2 disc encryption requires us to include a
parser for base64-encoded data, as it is used to represent salts and
digests. As gnulib already has code to decode such data, we can just
add it to the boostrapping configuration in order to make it available
in GRUB.
The gnulib module makes use of booleans via the <stdbool.h> header. As
GRUB does not provide any POSIX wrapper header for this, but instead
implements support for `bool` in <sys/types.h>, we need to patch
base64.h to not use <stdbool.h> anymore. We unfortunately cannot include
<sys/types.h> instead, as it would then use gnulib's internal header
while compiling the gnulib object but our own <sys/types.h> when
including it in a GRUB module. Because of this, the patch replaces the
include with a direct typedef.
Signed-off-by: Patrick Steinhardt <address@hidden>
---
bootstrap.conf | 3 ++-
conf/Makefile.extra-dist | 1 +
grub-core/lib/gnulib-patches/fix-base64.patch | 26 +++++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 grub-core/lib/gnulib-patches/fix-base64.patch
diff --git a/bootstrap.conf b/bootstrap.conf
index 988dda099..22b908f36 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -23,6 +23,7 @@ GNULIB_REVISION=d271f868a8df9bbec29049d01e056481b7a1a263
# directly.
gnulib_modules="
argp
+ base64
error
fnmatch
getdelim
@@ -78,7 +79,7 @@ cp -a INSTALL INSTALL.grub
bootstrap_post_import_hook () {
set -e
- for patchname in fix-null-deref fix-width no-abort; do
+ for patchname in fix-base64 fix-null-deref fix-width no-abort; do
patch -d grub-core/lib/gnulib -p2 \
< "grub-core/lib/gnulib-patches/$patchname.patch"
done
diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
index 46c4e95e2..32b217853 100644
--- a/conf/Makefile.extra-dist
+++ b/conf/Makefile.extra-dist
@@ -28,6 +28,7 @@ EXTRA_DIST += grub-core/gensymlist.sh
EXTRA_DIST += grub-core/genemuinit.sh
EXTRA_DIST += grub-core/genemuinitheader.sh
+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-base64.patch
EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch
EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch
EXTRA_DIST += grub-core/lib/gnulib-patches/no-abort.patch
diff --git a/grub-core/lib/gnulib-patches/fix-base64.patch
b/grub-core/lib/gnulib-patches/fix-base64.patch
new file mode 100644
index 000000000..392f21fb1
--- /dev/null
+++ b/grub-core/lib/gnulib-patches/fix-base64.patch
@@ -0,0 +1,26 @@
+diff --git a/lib/base64.h b/lib/base64.h
+index 9cd0183b8..7b06e03df 100644
+--- a/lib/base64.h
++++ b/lib/base64.h
+@@ -21,8 +21,10 @@
+ /* Get size_t. */
+ # include <stddef.h>
+
+-/* Get bool. */
+-# include <stdbool.h>
++#ifndef GRUB_POSIX_BOOL_DEFINED
++typedef enum { false = 0, true = 1 } bool;
++#define GRUB_POSIX_BOOL_DEFINED 1
++#endif
+
+ # ifdef __cplusplus
+ extern "C" {
+@@ -38,7 +40,7 @@ struct base64_decode_context
+ char buf[4];
+ };
+
+-extern bool isbase64 (char ch) _GL_ATTRIBUTE_CONST;
++extern bool isbase64 (char ch);
+
+ extern void base64_encode (const char *restrict in, size_t inlen,
+ char *restrict out, size_t outlen);
--
2.23.0
- [PATCH 0/6] Support for LUKS2 disc encryption, Patrick Steinhardt, 2019/11/02
- [PATCH 3/6] bootstrap: Add gnulib's base64 module,
Patrick Steinhardt <=
- [PATCH 2/6] jsmn: Add convenience functions, Patrick Steinhardt, 2019/11/02
- Re: [PATCH 2/6] jsmn: Add convenience functions, Max Tottenham, 2019/11/04
- Re: [PATCH 2/6] jsmn: Add convenience functions, Patrick Steinhardt, 2019/11/04
- Re: [PATCH 2/6] jsmn: Add convenience functions, Daniel Kiper, 2019/11/04
- Re: [PATCH 2/6] jsmn: Add convenience functions, Patrick Steinhardt, 2019/11/04
- Re: [PATCH 2/6] jsmn: Add convenience functions, Daniel Kiper, 2019/11/06
- Re: [PATCH 2/6] jsmn: Add convenience functions, Patrick Steinhardt, 2019/11/06
- Re: [PATCH 2/6] jsmn: Add convenience functions, Daniel Kiper, 2019/11/13