Merge utils: catch TypeError exception for binary logs

When a log like system.journal is passed on to aa-genprof, for
example, the user receives a TypeError exception: in method
'parse_record', argument 1 of type 'char *'

This patch catches that exception and displays a more meaningful
message.

Fixes: https://gitlab.com/apparmor/apparmor/-/issues/436
Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>

Closes #436
MR: https://gitlab.com/apparmor/apparmor/-/merge_requests/1354
Approved-by: Christian Boltz <apparmor@cboltz.de>
Merged-by: John Johansen <john@jjmx.net>

(cherry picked from commit cb0f84e101)
Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>
This commit is contained in:
John Johansen 2024-10-17 18:56:25 +00:00 committed by Georgia Garcia
parent bdb650bf98
commit e7d5937213

View file

@ -17,6 +17,7 @@ import re
import sys
import time
import LibAppArmor
import apparmor.ui as aaui
from apparmor.common import AppArmorException, AppArmorBug, hasher, open_file_read, split_name, DebugLogger
# setup module translations
@ -82,7 +83,13 @@ class ReadLog:
if sys.version_info < (3, 0):
# parse_record fails with u'foo' style strings hence typecasting to string
msg = str(msg)
event = LibAppArmor.parse_record(msg)
try:
event = LibAppArmor.parse_record(msg)
except TypeError:
aaui.UI_Important(_("WARNING: Cannot process log message, skipping entry. Make sure log is plaintext."))
return None
ev = dict()
ev['resource'] = event.info
ev['active_hat'] = event.active_hat