[apparmor] Memory leaks in parser/parser_regex.c (at least)
John Johansen
john.johansen at canonical.com
Mon Aug 31 18:30:54 UTC 2015
On 08/28/2015 05:26 PM, Steve Beattie wrote:
> On Fri, Aug 28, 2015 at 04:36:35PM +0200, intrigeri wrote:
>> Steve Beattie wrote (27 Aug 2015 20:44:58 GMT) :
>>> It looks like the parser never drops it's reference to the policy cache
>>> object. This patch looks to fix the issue:
>>
>> It helps! With your 5 patches applied, including the two ones you've
>> sent yesterday, the build now stops at:
>>
>> FAIL: test case failed for testcase_dmesg_rename_dest: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_link_01: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_rename_src: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_mkdir: child process exited abnormally
>> FAIL: test case failed for avc_audit_invalid_audit_id: child process exited abnormally
>> FAIL: test case failed for syslog_other_02: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_truncate: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_changehat_negative_error: child process exited abnormally
>> FAIL: test case failed for syslog_other_03: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_changeprofile_01: child process exited abnormally
>> FAIL: test case failed for syslog_other_04: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_capability: child process exited abnormally
>> FAIL: test case failed for syslog_other_01: child process exited abnormally
>> FAIL: test case failed for testcase_dmesg_status_offset: child process exited abnormally
>
> The following patch should address these:
>
> Signed-off-by: Steve Beattie <steve at nxnw.org>
Acked-by: John Johansen <john.johansen at canonical.com>
> ---
> libraries/libapparmor/src/grammar.y | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> Index: b/libraries/libapparmor/src/grammar.y
> ===================================================================
> --- a/libraries/libapparmor/src/grammar.y
> +++ b/libraries/libapparmor/src/grammar.y
> @@ -166,6 +166,11 @@ aa_record_event_type lookup_aa_event(uns
> %token TOK_SYSLOG_KERNEL
> %token TOK_SYSLOG_USER
>
> +%destructor { free($$); } TOK_QUOTED_STRING TOK_ID TOK_MODE TOK_DMESG_STAMP
> +%destructor { free($$); } TOK_AUDIT_DIGITS TOK_DATE_MONTH TOK_DATE TOK_TIME
> +%destructor { free($$); } TOK_HEXSTRING TOK_TYPE_OTHER TOK_MSG_REST
> +%destructor { free($$); } TOK_IP_ADDR
> +
> %%
>
> log_message: audit_type
> @@ -201,7 +206,7 @@ other_audit: TOK_TYPE_OTHER audit_msg TO
> ;
>
> dmesg_type: TOK_DMESG_STAMP TOK_AUDIT TOK_COLON key_type audit_id key_list
> - { ret_record->version = AA_RECORD_SYNTAX_V2; }
> + { ret_record->version = AA_RECORD_SYNTAX_V2; free($1); }
> ;
>
> syslog_type:
>
> The latter fix is a legit oversight. The former deconstructors are
> for when bison can't find a solution and needs to pop state back off
> its stack (in our case, when we've failed to parse a log message).
>
> However, this results in log parsing failures that have very little
> content; for some of our failures we populate the unparsed portion
> of log entry in the info field (e.g. parsing old old old non longer
> used anywhere style log messages), but for many we do not. It would
> be good if we could better and consistent here.
>
>
>
More information about the AppArmor
mailing list