Skip to content

Commit f95dbf2

Browse files
cgzonesfishilico
authored andcommitted
libsepol: avoid passing NULL pointer to memcpy
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]>
1 parent 85982d8 commit f95dbf2

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

libsepol/src/module.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,14 @@ static int link_netfilter_contexts(sepol_module_package_t * base,
293293
}
294294
base->netfilter_contexts = base_context;
295295
for (i = 0; i < num_modules; i++) {
296-
memcpy(base->netfilter_contexts + base->netfilter_contexts_len,
297-
modules[i]->netfilter_contexts,
298-
modules[i]->netfilter_contexts_len);
299-
base->netfilter_contexts_len +=
300-
modules[i]->netfilter_contexts_len;
296+
if (modules[i]->netfilter_contexts_len > 0) {
297+
memcpy(base->netfilter_contexts + base->netfilter_contexts_len,
298+
modules[i]->netfilter_contexts,
299+
modules[i]->netfilter_contexts_len);
300+
base->netfilter_contexts_len +=
301+
modules[i]->netfilter_contexts_len;
302+
}
303+
301304
}
302305
return 0;
303306
}

0 commit comments

Comments
 (0)