@@ -228,13 +228,16 @@ void test_attr_types(policydb_t * p, const char *id, avrule_decl_t * decl, const
unsigned int i;
type_datum_t *attr;
- if (decl)
+ if (decl) {
attr = hashtab_search(decl->p_types.table, id);
- else
+ if (attr == NULL)
+ printf("could not find attr %s in decl %d\n", id, decl->decl_id);
+ } else {
attr = hashtab_search(p->p_types.table, id);
+ if (attr == NULL)
+ printf("could not find attr %s in policy\n", id);
+ }
- if (attr == NULL)
- printf("could not find attr %s in decl %d\n", id, decl->decl_id);
CU_ASSERT_FATAL(attr != NULL);
CU_ASSERT(attr->flavor == TYPE_ATTRIB);
CU_ASSERT(attr->primary == 1);
In test_attr_types, the pointer decl is allowed to be NULL in the beginning, but is dereferenced to produce a helpful message right before a CU_ASSERT_FATAL. Make this derefence not happen if the pointer is NULL. This issue has been found using clang's static analyzer. Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org> --- libsepol/tests/test-common.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)