Skip to content
  • Ondřej Surý's avatar
    Fix 'Dereference of null pointer' from scan-build-10 · ddd0d356
    Ondřej Surý authored
    These are mostly false positives, the clang-analyzer FAQ[1] specifies
    why and how to fix it:
    
    > The reason the analyzer often thinks that a pointer can be null is
    > because the preceding code checked compared it against null. So if you
    > are absolutely sure that it cannot be null, remove the preceding check
    > and, preferably, add an assertion as well.
    
    The 4 warnings reported are:
    
    dnssec-cds.c:781:4: warning: Access to field 'base' results in a dereference of a null pointer (loaded from variable 'buf')
                            isc_buffer_availableregion(buf, &r);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /builds/isc-projects/bind9/lib/isc/include/isc/buffer.h:996:36: note: expanded from macro 'isc_buffer_availableregion'
                                       ^
    /builds/isc-projects/bind9/lib/isc/include/isc/buffer.h:821:16: note: expanded from macro 'ISC__BUFFER_AVAILABLEREGION'
                    (_r)->base = isc_buffer_used(_b);              \
                                 ^~~~~~~~~~~~~~~~~~~
    /builds/isc-projects/bind9/lib/isc/include/isc/buffer.h:152:29: note: expanded from macro 'isc_buffer_used'
            ((void *)((unsigned char *)(b)->base + (b)->used)) /*d*/
                                       ^~~~~~~~~
    1 warning generated.
    
    --
    
    byname_test.c:308:34: warning: Access to field 'fwdtable' results in a dereference of a null pointer (loaded from variable 'view')
                    RUNTIME_CHECK(dns_fwdtable_add(view->fwdtable, dns_rootname,
                                                   ^~~~~~~~~~~~~~
    /builds/isc-projects/bind9/lib/isc/include/isc/util.h:318:52: note: expanded from macro 'RUNTIME_CHECK'
                                                       ^~~~
    /builds/isc-projects/bind9/lib/isc/include/isc/error.h:50:21: note: expanded from macro 'ISC_ERROR_RUNTIMECHECK'
            ((void)(ISC_LIKELY(cond) ||  \
                               ^~~~
    /builds/isc-projects/bind9/lib/isc/include/isc/likely.h:23:43: note: expanded from macro 'ISC_LIKELY'
                                                ^
    1 warning generated.
    
    --
    
    ./rndc.c:255:6: warning: Dereference of null pointer (loaded from variable 'host')
            if (*host == '/') {
                ^~~~~
    1 warning generated.
    
    --
    
    ./main.c:1254:9: warning: Access to field 'sctx' results in a dereference of a null pointer (loaded from variable 'named_g_server')
            sctx = named_g_server->sctx;
                   ^~~~~~~~~~~~~~~~~~~~
    1 warning generated.
    
    References:
    1. https://clang-analyzer.llvm.org/faq.html#null_pointer
    ddd0d356