1From 3a37bf120a9194c373257c70175cdb5b337bc107 Mon Sep 17 00:00:00 2001
2From: Darren Kenny <darren.kenny@oracle.com>
3Date: Wed, 28 Oct 2020 14:43:01 +0000
4Subject: [PATCH] gnulib/argp-help: Fix dereference of a possibly NULL state
5
6All other instances of call to __argp_failure() where there is
7a dgettext() call is first checking whether state is NULL before
8attempting to dereference it to get the root_argp->argp_domain.
9
10Fixes: CID 292436
11
12Signed-off-by: Darren Kenny <darren.kenny@oracle.com>
13Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
14[Add changes to generated files]
15Signed-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
16---
17 Makefile.in                                             |  1 +
18 conf/Makefile.extra-dist                                |  1 +
19 grub-core/lib/gnulib-patches/fix-null-state-deref.patch | 12 ++++++++++++
20 grub-core/lib/gnulib/argp-help.c                        |  3 ++-
21 4 files changed, 16 insertions(+), 1 deletion(-)
22 create mode 100644 grub-core/lib/gnulib-patches/fix-null-state-deref.patch
23
24diff --git a/Makefile.in b/Makefile.in
25index d58a7d7..812b7c2 100644
26--- a/Makefile.in
27+++ b/Makefile.in
28@@ -2742,6 +2742,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \
29 	grub-core/gensyminfo.sh.in grub-core/gensymlist.sh \
30 	grub-core/genemuinit.sh grub-core/genemuinitheader.sh \
31 	grub-core/lib/gnulib-patches/fix-null-deref.patch \
32+	grub-core/lib/gnulib-patches/fix-null-state-deref.patch \
33 	grub-core/lib/gnulib-patches/fix-uninit-structure.patch \
34 	grub-core/lib/gnulib-patches/fix-unused-value.patch \
35 	grub-core/lib/gnulib-patches/fix-width.patch \
36diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
37index 9e55458..96d7e69 100644
38--- a/conf/Makefile.extra-dist
39+++ b/conf/Makefile.extra-dist
40@@ -29,6 +29,7 @@ EXTRA_DIST += grub-core/genemuinit.sh
41 EXTRA_DIST += grub-core/genemuinitheader.sh
42
43 EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch
44+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-state-deref.patch
45 EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch
46 EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch
47 EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch
48diff --git a/grub-core/lib/gnulib-patches/fix-null-state-deref.patch b/grub-core/lib/gnulib-patches/fix-null-state-deref.patch
49new file mode 100644
50index 0000000..813ec09
51--- /dev/null
52+++ b/grub-core/lib/gnulib-patches/fix-null-state-deref.patch
53@@ -0,0 +1,12 @@
54+--- a/lib/argp-help.c	2020-10-28 14:32:19.189215988 +0000
55++++ b/lib/argp-help.c	2020-10-28 14:38:21.204673940 +0000
56+@@ -145,7 +145,8 @@
57+       if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)
58+         {
59+           __argp_failure (state, 0, 0,
60+-                          dgettext (state->root_argp->argp_domain,
61++                          dgettext (state == NULL ? NULL
62++                                    : state->root_argp->argp_domain,
63+                                     "\
64+ ARGP_HELP_FMT: %s value is less than or equal to %s"),
65+                           "rmargin", up->name);
66diff --git a/grub-core/lib/gnulib/argp-help.c b/grub-core/lib/gnulib/argp-help.c
67index 5d8f451..c75568c 100644
68--- a/grub-core/lib/gnulib/argp-help.c
69+++ b/grub-core/lib/gnulib/argp-help.c
70@@ -145,7 +145,8 @@ validate_uparams (const struct argp_state *state, struct uparams *upptr)
71       if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)
72         {
73           __argp_failure (state, 0, 0,
74-                          dgettext (state->root_argp->argp_domain,
75+                          dgettext (state == NULL ? NULL
76+                                    : state->root_argp->argp_domain,
77                                     "\
78 ARGP_HELP_FMT: %s value is less than or equal to %s"),
79                           "rmargin", up->name);
80--
812.14.2
82
83