Skip to content

Commit

Permalink
libsepol: avoid passing NULL pointer to memcpy
Browse files Browse the repository at this point in the history
memcpy(3) might be annotated with the function attribute nonnull and
UBSan then complains:

    module.c:296:3: runtime error: null pointer passed as argument 2, which is declared to never be null
        #0 0x7f2468efa5b3 in link_netfilter_contexts ./libsepol/src/module.c:296
        #1 0x7f2468efa5b3 in sepol_link_packages ./libsepol/src/module.c:337
        #2 0x562331e9e123 in main ./semodule-utils/semodule_link/semodule_link.c:145
        #3 0x7f2467e247ec in __libc_start_main ../csu/libc-start.c:332
        #4 0x562331e9d2a9 in _start (./destdir/usr/bin/semodule_link+0x32a9)

Signed-off-by: Christian Göttsche <[email protected]>
  • Loading branch information
cgzones authored and fishilico committed Nov 11, 2021
1 parent 85982d8 commit f95dbf2
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions libsepol/src/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -293,11 +293,14 @@ static int link_netfilter_contexts(sepol_module_package_t * base,
}
base->netfilter_contexts = base_context;
for (i = 0; i < num_modules; i++) {
memcpy(base->netfilter_contexts + base->netfilter_contexts_len,
modules[i]->netfilter_contexts,
modules[i]->netfilter_contexts_len);
base->netfilter_contexts_len +=
modules[i]->netfilter_contexts_len;
if (modules[i]->netfilter_contexts_len > 0) {
memcpy(base->netfilter_contexts + base->netfilter_contexts_len,
modules[i]->netfilter_contexts,
modules[i]->netfilter_contexts_len);
base->netfilter_contexts_len +=
modules[i]->netfilter_contexts_len;
}

}
return 0;
}
Expand Down

0 comments on commit f95dbf2

Please sign in to comment.