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