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