bootstrap: Add gnulib's base64 module
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. A second fix is required to make available _GL_ATTRIBUTE_CONST, which is provided by the configure script. As base64.h does not include <config.h>, it is thus not available and results in a compile error. This is fixed by adding an include of <config-util.h>. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
c6a84545a3
commit
9fbdec2f6b
3 changed files with 26 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
23
grub-core/lib/gnulib-patches/fix-base64.patch
Normal file
23
grub-core/lib/gnulib-patches/fix-base64.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
diff --git a/lib/base64.h b/lib/base64.h
|
||||
index 9cd0183b8..a2aaa2d4a 100644
|
||||
--- a/lib/base64.h
|
||||
+++ b/lib/base64.h
|
||||
@@ -18,11 +18,16 @@
|
||||
#ifndef BASE64_H
|
||||
# define BASE64_H
|
||||
|
||||
+/* Get _GL_ATTRIBUTE_CONST */
|
||||
+# include <config-util.h>
|
||||
+
|
||||
/* 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" {
|
Loading…
Reference in a new issue