ima: properly free ima_template_entry structures
authorRoberto Sassu <roberto.sassu@polito.it>
Mon, 2 Dec 2013 18:40:34 +0000 (19:40 +0100)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Tue, 3 Dec 2013 01:46:56 +0000 (20:46 -0500)
commita7ed7c60e14df5b986f93549717235b882643e7e
tree7e615a0664541d91f99c5875164b335b74fd8d8d
parent09ae6345721afbb7cf3e0920209b140cbe7bff0d
ima: properly free ima_template_entry structures

The new templates management mechanism records information associated
to an event into an array of 'ima_field_data' structures and makes it
available through the 'template_data' field of the 'ima_template_entry'
structure (the element of the measurements list created by IMA).

Since 'ima_field_data' contains dynamically allocated data (which length
varies depending on the data associated to a selected template field),
it is not enough to just free the memory reserved for a
'ima_template_entry' structure if something goes wrong.

This patch creates the new function ima_free_template_entry() which
walks the array of 'ima_field_data' structures, frees the memory
referenced by the 'data' pointer and finally the space reserved for
the 'ima_template_entry' structure. Further, it replaces existing kfree()
that have a pointer to an 'ima_template_entry' structure as argument
with calls to the new function.

Fixes: a71dc65: ima: switch to new template management mechanism
Signed-off-by: Roberto Sassu <roberto.sassu@polito.it>
Signed-off-by: Mimi Zohar <zohar@us.ibm.com>
security/integrity/ima/ima.h
security/integrity/ima/ima_api.c
security/integrity/ima/ima_init.c