* Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument @ 2021-09-01 10:52 Alexander Kuleshov 2021-09-01 12:26 ` Eli Zaretskii 0 siblings, 1 reply; 5+ messages in thread From: Alexander Kuleshov @ 2021-09-01 10:52 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 420 bytes --] Hello, I'm getting: gtkutil.c: In function ‘xg_item_label_same_p’: gtkutil.c:2936:54: error: use of NULL where non-null expected [CWE-476] [-Werror=analyzer-null-argument] 2936 | && ((!old_label && !utf8_label) || strcmp (utf8_label, old_label) == 0)); error during building of GNU Emacs from master on Fedora 34 with GCC 11.2.1. I've attached a simple fix for that. Thank you. [-- Attachment #2: 0001-Fix-building-with-gcc-11.1.2-and-Wanalyzer-null-argu.patch --] [-- Type: text/x-patch, Size: 1018 bytes --] From f4588402aac1c001b93b2df0de344fa8316276cc Mon Sep 17 00:00:00 2001 From: Alexander Kuleshov <kuleshovmail@gmail.com> Date: Wed, 1 Sep 2021 16:46:19 +0600 Subject: [PATCH] Fix building with gcc 11.1.2 and -Wanalyzer-null-argument option * src/gtkutil.c (xg_item_label_same_p): Fix a bug where strcmp could get NULL as argument --- src/gtkutil.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gtkutil.c b/src/gtkutil.c index 313cfc82c2..9ac2a6fea3 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -2932,8 +2932,8 @@ xg_item_label_same_p (GtkMenuItem *witem, const char *label) char *utf8_label = get_utf8_string (label); const char *old_label = witem ? xg_get_menu_item_label (witem) : 0; - bool is_same = (!old_label == !utf8_label - && (!old_label || strcmp (utf8_label, old_label) == 0)); + bool is_same = (!old_label == !utf8_label) + || ((old_label && utf8_label) && strcmp (utf8_label, old_label) == 0); if (utf8_label) g_free (utf8_label); -- 2.31.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument 2021-09-01 10:52 Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument Alexander Kuleshov @ 2021-09-01 12:26 ` Eli Zaretskii 2021-09-01 12:44 ` Alexander Kuleshov 0 siblings, 1 reply; 5+ messages in thread From: Eli Zaretskii @ 2021-09-01 12:26 UTC (permalink / raw) To: Alexander Kuleshov; +Cc: emacs-devel > From: Alexander Kuleshov <kuleshovmail@gmail.com> > Date: Wed, 1 Sep 2021 16:52:55 +0600 > > gtkutil.c: In function ‘xg_item_label_same_p’: > gtkutil.c:2936:54: error: use of NULL where non-null expected > [CWE-476] [-Werror=analyzer-null-argument] > 2936 | && ((!old_label && !utf8_label) || strcmp > (utf8_label, old_label) == 0)); Isn't this a GCC bug? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument 2021-09-01 12:26 ` Eli Zaretskii @ 2021-09-01 12:44 ` Alexander Kuleshov 2021-09-01 13:36 ` Eli Zaretskii 0 siblings, 1 reply; 5+ messages in thread From: Alexander Kuleshov @ 2021-09-01 12:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel On Wed, Sep 1, 2021 at 6:26 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > From: Alexander Kuleshov <kuleshovmail@gmail.com> > > Date: Wed, 1 Sep 2021 16:52:55 +0600 > > > > gtkutil.c: In function ‘xg_item_label_same_p’: > > gtkutil.c:2936:54: error: use of NULL where non-null expected > > [CWE-476] [-Werror=analyzer-null-argument] > > 2936 | && ((!old_label && !utf8_label) || strcmp > > (utf8_label, old_label) == 0)); > > Isn't this a GCC bug? hmm, yes, possibly. And forget about attachment, I was wrong with `(!old_label == !utf8_label) ||` part. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument 2021-09-01 12:44 ` Alexander Kuleshov @ 2021-09-01 13:36 ` Eli Zaretskii 2021-09-01 17:20 ` Alexander Kuleshov 0 siblings, 1 reply; 5+ messages in thread From: Eli Zaretskii @ 2021-09-01 13:36 UTC (permalink / raw) To: Alexander Kuleshov; +Cc: emacs-devel > From: Alexander Kuleshov <kuleshovmail@gmail.com> > Date: Wed, 1 Sep 2021 18:44:34 +0600 > Cc: emacs-devel <emacs-devel@gnu.org> > > On Wed, Sep 1, 2021 at 6:26 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > > > From: Alexander Kuleshov <kuleshovmail@gmail.com> > > > Date: Wed, 1 Sep 2021 16:52:55 +0600 > > > > > > gtkutil.c: In function ‘xg_item_label_same_p’: > > > gtkutil.c:2936:54: error: use of NULL where non-null expected > > > [CWE-476] [-Werror=analyzer-null-argument] > > > 2936 | && ((!old_label && !utf8_label) || strcmp > > > (utf8_label, old_label) == 0)); > > > > Isn't this a GCC bug? > > hmm, yes, possibly. And forget about attachment, I was wrong with > `(!old_label == !utf8_label) ||` part. So maybe report it to their Bugzilla? If it isn't a bug, perhaps they will explain to us what is wrong with our code? Thanks. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument 2021-09-01 13:36 ` Eli Zaretskii @ 2021-09-01 17:20 ` Alexander Kuleshov 0 siblings, 0 replies; 5+ messages in thread From: Alexander Kuleshov @ 2021-09-01 17:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1404 bytes --] Yes, I'm trying to get a minimal example to reproduce the same error. By the way it seems that the previous commit in src/gtkutil.c source code file fixed similar issue https://github.com/emacs-mirror/emacs/commit/2337869fbf8b967eb53ee57f978f3751987e43dc#diff-f807e90fbf62c1caf61ddc156d5e165035c18820c2320b701be87f96cb242833R3224 Attached file with the full output, just for the case. On Wed, Sep 1, 2021 at 7:36 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > From: Alexander Kuleshov <kuleshovmail@gmail.com> > > Date: Wed, 1 Sep 2021 18:44:34 +0600 > > Cc: emacs-devel <emacs-devel@gnu.org> > > > > On Wed, Sep 1, 2021 at 6:26 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > > > > > From: Alexander Kuleshov <kuleshovmail@gmail.com> > > > > Date: Wed, 1 Sep 2021 16:52:55 +0600 > > > > > > > > gtkutil.c: In function ‘xg_item_label_same_p’: > > > > gtkutil.c:2936:54: error: use of NULL where non-null expected > > > > [CWE-476] [-Werror=analyzer-null-argument] > > > > 2936 | && ((!old_label && !utf8_label) || strcmp > > > > (utf8_label, old_label) == 0)); > > > > > > Isn't this a GCC bug? > > > > hmm, yes, possibly. And forget about attachment, I was wrong with > > `(!old_label == !utf8_label) ||` part. > > So maybe report it to their Bugzilla? If it isn't a bug, perhaps they > will explain to us what is wrong with our code? > > Thanks. [-- Attachment #2: gtkutil.error.txt --] [-- Type: text/plain, Size: 6396 bytes --] gtkutil.c: In function ‘xg_item_label_same_p’: gtkutil.c:2936:37: error: use of NULL ‘utf8_label’ where non-null expected [CWE-476] [-Werror=analyzer-null-argument] 2936 | && (!old_label || strcmp (utf8_label, old_label) == 0)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ‘xg_modify_menubar_widgets’: events 1-4 | | 3424 | xg_modify_menubar_widgets (GtkWidget *menubar, struct frame *f, | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to ‘xg_modify_menubar_widgets’ |...... | 3432 | if (! list) return; | | ~ | | | | | (2) following ‘false’ branch... | 3433 | | 3434 | cl_data = g_object_get_data (G_OBJECT (menubar), XG_FRAME_DATA); | | ~~~~~~~ | | | | | (3) ...to here | 3435 | | 3436 | xg_update_menubar (menubar, f, &list, list, 0, val->contents, | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling ‘xg_update_menubar’ from ‘xg_modify_menubar_widgets’ | 3437 | select_cb, deactivate_cb, highlight_cb, cl_data); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | +--> ‘xg_update_menubar’: events 5-12 | | 2972 | xg_update_menubar (GtkWidget *menubar, | | ^~~~~~~~~~~~~~~~~ | | | | | (5) entry to ‘xg_update_menubar’ |...... | 2983 | if (! iter && ! val) | | ~ | | | | | (6) following ‘false’ branch... | 2984 | return; | 2985 | else if (iter && ! val) | | ~~ ~ | | | | | | | (8) following ‘false’ branch... | | (7) ...to here |...... | 2998 | else if (! iter && val) | | ~~ ~ | | | | | | | (10) following ‘false’ branch... | | (9) ...to here |...... | 3009 | else if (xg_item_label_same_p (GTK_MENU_ITEM (iter->data), val->name)) | | ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (12) calling ‘xg_item_label_same_p’ from ‘xg_update_menubar’ | | (11) ...to here | +--> ‘xg_item_label_same_p’: events 13-14 | | 2930 | xg_item_label_same_p (GtkMenuItem *witem, const char *label) | | ^~~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to ‘xg_item_label_same_p’ | 2931 | { | 2932 | char *utf8_label = get_utf8_string (label); | | ~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling ‘get_utf8_string’ from ‘xg_item_label_same_p’ | +--> ‘get_utf8_string’: events 15-16 | | 514 | get_utf8_string (const char *str) | | ^~~~~~~~~~~~~~~ | | | | | (15) entry to ‘get_utf8_string’ |...... | 518 | if (!str) return NULL; | | ~ | | | | | (16) following ‘true’ branch (when ‘str’ is NULL)... | ‘get_utf8_string’: event 17 | |cc1: | (17): ...to here | <------+ | ‘xg_item_label_same_p’: events 18-25 | | 2932 | char *utf8_label = get_utf8_string (label); | | ^~~~~~~~~~~~~~~~~~~~~~~ | | | | | (18) returning to ‘xg_item_label_same_p’ from ‘get_utf8_string’ | 2933 | const char *old_label = witem ? xg_get_menu_item_label (witem) : 0; | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (19) following ‘true’ branch (when ‘witem’ is non-NULL)... | | (20) ...to here | 2934 | | 2935 | bool is_same = (!old_label == !utf8_label | | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | 2936 | && (!old_label || strcmp (utf8_label, old_label) == 0)); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (24) ...to here | | | (25) argument 1 (‘utf8_label’) NULL where non-null expected | | (21) following ‘true’ branch... | | (22) ...to here | | (23) following ‘false’ branch... | In file included from ../lib/string.h:41, from lisp.h:29, from gtkutil.c:36: /usr/include/string.h:140:12: note: argument 1 of ‘strcmp’ must be non-null 140 | extern int strcmp (const char *__s1, const char *__s2) | ^~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:386: gtkutil.o] Error 1 make[1]: Leaving directory '/home/alex/disk/dev/emacs/src' make: *** [Makefile:443: src] Error 2 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-09-01 17:20 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-09-01 10:52 Adjust gtkutil.c to build with gcc (GCC) 11.2.1 with -Wanalyzer-null-argument Alexander Kuleshov 2021-09-01 12:26 ` Eli Zaretskii 2021-09-01 12:44 ` Alexander Kuleshov 2021-09-01 13:36 ` Eli Zaretskii 2021-09-01 17:20 ` Alexander Kuleshov
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).