]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
analyzer: avoid saying "'0' is NULL"
authorDavid Malcolm <dmalcolm@redhat.com>
Wed, 30 Apr 2025 20:50:15 +0000 (16:50 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Wed, 30 Apr 2025 20:50:15 +0000 (16:50 -0400)
gcc/analyzer/ChangeLog:
* sm-malloc.cc (malloc_diagnostic::describe_state_change): Tweak
the "EXPR is NULL" message for the case where EXPR is a null
pointer.

gcc/testsuite/ChangeLog:
* c-c++-common/analyzer/data-model-path-1.c: Check for
"using NULL here" message.
* c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c:
Likewise.  Check for "return of NULL" message.
* c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c:
Likewise.
* gcc.dg/analyzer/data-model-5.c: Likewise.
* gcc.dg/analyzer/data-model-5b.c: Likewise.
* gcc.dg/analyzer/data-model-5c.c: Likewise.
* gcc.dg/analyzer/torture/pr93647.c: Likewise.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/sm-malloc.cc
gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c
gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
gcc/testsuite/c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c
gcc/testsuite/gcc.dg/analyzer/data-model-5.c
gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c

index 01862686d58e4b6f38d2758aa361446ca75eb3bc..333dfea47d3400b7638ea60a9317edff0f4a4942 100644 (file)
@@ -785,8 +785,13 @@ public:
        else
          {
            if (change.m_expr)
-             pp_printf (&pp, "%qE is NULL",
-                        change.m_expr);
+             {
+               if (zerop (change.m_expr))
+                 pp_printf (&pp, "using NULL here");
+               else
+                 pp_printf (&pp, "%qE is NULL",
+                            change.m_expr);
+             }
            else
              pp_printf (&pp, "%qs is NULL",
                         "<unknown>");
index d7058ea18e034a181bf7fac686956703ac9394a9..0609dc8cb4f7de33e44fb310728abdaec92f796d 100644 (file)
@@ -3,7 +3,7 @@
 static int *__attribute__((noinline))
 callee (void)
 {
-  return NULL;
+  return NULL; /* { dg-message "using NULL here" } */
 }
 
 void test_1 (void)
index c5f1fa42e6f193fe6a0374e040945e1d7846aef1..4f04e46695e4b4c4675d85ad8c0eaf936f3e4ed6 100644 (file)
@@ -66,7 +66,7 @@ static inline struct connection *__objt_conn(enum obj_type *t)
 static inline struct connection *objt_conn(enum obj_type *t)
 {
  if (!t || *t != OBJ_TYPE_CONN)
-   return (struct connection *) ((void *)0);
+   return (struct connection *) ((void *)0); /* { dg-message "using NULL here" } */
  return __objt_conn(t);
 }
 struct session {
@@ -85,7 +85,7 @@ smp_fetch_ssl_fc_has_early(const struct arg *args, struct sample *smp, const cha
  SSL *ssl;
  struct connection *conn;
 
- conn = objt_conn(smp->sess->origin);
+ conn = objt_conn(smp->sess->origin); /* { dg-message "return of NULL" } */
  ssl = ssl_sock_get_ssl_object(conn);
  if (!ssl)
   return 0;
index 9dcf7aa31f1018910e9e26ef53333825345e9a6b..0ebeeff8348c0d755695a754bb283553c46fa8cb 100644 (file)
@@ -60,7 +60,7 @@ void WuExpireSessionKey(WEBUI *wu)
 
        for(i=0; i<LIST_NUM(wu->Contexts); i++)
        {
-               STRMAP_ENTRY *entry = (STRMAP_ENTRY*)LIST_DATA(wu->Contexts, i);
+               STRMAP_ENTRY *entry = (STRMAP_ENTRY*)LIST_DATA(wu->Contexts, i); /* { dg-message "'entry' is NULL" } */
                WU_CONTEXT *context = (WU_CONTEXT*)entry->Value; /* { dg-bogus "dereference of NULL 'entry'" "PR analyzer/108400" { xfail *-*-* } } */
                if(context->ExpireDate < Tick64())
                {
index b71bad757a19321c2621b44ffce68e87f80e74ae..78e2752198074c450fcdbeebd28958103ed895cd 100644 (file)
@@ -60,7 +60,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
index cd6a4df00dd940457d6c0b750432569cded09695..f66c8c4aefeef60ed37662ba8b255b8ed9429453 100644 (file)
@@ -44,7 +44,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
index ad4e1d2644dfe77fd6dc927b31b355506eec396b..1ce355f7ff28f3ab8921ea3a55ee48e81d3c29ab 100644 (file)
@@ -38,7 +38,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
index fbfe570780bbdbcff56d19af949f3f560ff2439b..194c99aa42d22752f5f44967abbd21a57abb22c9 100644 (file)
@@ -8,7 +8,7 @@ ky (int);
 void
 wd (void)
 {
-  tz = 0;
+  tz = 0; /* { dg-message "using NULL here" } */
   ky (*tz); /* { dg-warning "dereference of NULL" } */
 }