Hello,
On Thursday, August 15, 2024 2:12:41 PM EDT nupurdeora(a)gmail.com wrote:
ok Thanks I 'll try the multithreading . I have one more thing
that I want
to acheive using the handle_event
I want to print the logs with different severity based on TYPE and
permissive set to 1 or 0 . SO my sample code is like below. When I use the
API "auparse_find_field" , does it move the pointer to the field value
permanently ?
Yes.
Do I need to reset the pointer before I pass the "au" to
next function ?
It depends on the function. Some automatically rewind and some don't. I
suppose it doesn't hurt to reset the internal cursor. Couple points below
static void handle_event(auparse_state_t *au,
151 auparse_cb_event_t cb_event_type, void *user_data)
152 {
153 int type, num = 0;
154
155 if (cb_event_type != AUPARSE_CB_EVENT_READY)
156 return;
I should probably get rid of this ^^^ in examples. There is only one state
for cb_event_type and it is always that state.
158 while (auparse_goto_record_num(au, num) > 0) {
159 type = auparse_get_type(au);
160 const char *perm = auparse_find_field(au, "permissive");
I'd move this ^^^ into the case for AUDIT_USER_AVC so that it doesn't look
for it in non-avc records. Also, that function will cross record boundaries
while looking for it. It stops at the end of the event if it can't find it.
161
162 switch (type) {
163 case AUDIT_AVC:
164 case AUDIT_USER_AVC:
165 if (perm) {
166 if (strncmp(perm, "0", 1) == 0) {
could be if (*perm == '0')
167 dump_avc_critical_record(au);
168 }
169 else if (strncmp(perm, "1", 1) == 0) {
170 dump_avc_info_record(au);
171 }
172 }
173 else {
174 dump_avc_info_record(au);
175 }
176 break;
177 default:
178 dump_whole_record(au);
179 break;
180 }
181 num ++;
182 }
183 }
_______________________________________________
Linux-audit mailing list -- linux-audit(a)lists.linux-audit.osci.io
To unsubscribe send an email to linux-audit-leave(a)lists.linux-audit.osci.io