78 lines
2.3 KiB
Diff
78 lines
2.3 KiB
Diff
|
|
diff -Nur audit-3.0.org/src/auditd.c audit-3.0/src/auditd.c
|
||
|
|
--- audit-3.0.org/src/auditd.c 2019-07-30 09:29:49.420000000 +0800
|
||
|
|
+++ audit-3.0/src/auditd.c 2019-07-30 09:58:30.484000000 +0800
|
||
|
|
@@ -76,6 +76,7 @@
|
||
|
|
static int usr1_info_requested = 0, usr2_info_requested = 0;
|
||
|
|
static char subj[SUBJ_LEN];
|
||
|
|
static uint32_t session;
|
||
|
|
+static int hup_flag = 0;
|
||
|
|
|
||
|
|
/* Local function prototypes */
|
||
|
|
int send_audit_event(int type, const char *str);
|
||
|
|
@@ -502,12 +503,24 @@
|
||
|
|
if (hup_info_requested) {
|
||
|
|
audit_msg(LOG_DEBUG,
|
||
|
|
"HUP detected, starting config manager");
|
||
|
|
- reconfig_ev = cur_event;
|
||
|
|
- if (start_config_manager(cur_event)) {
|
||
|
|
- send_audit_event(
|
||
|
|
- AUDIT_DAEMON_CONFIG,
|
||
|
|
- "op=reconfigure state=no-change "
|
||
|
|
- "auid=-1 pid=-1 subj=? res=failed");
|
||
|
|
+ if(hup_flag == 0)
|
||
|
|
+ {
|
||
|
|
+ hup_flag = 1;
|
||
|
|
+ reconfig_ev = cur_event;
|
||
|
|
+ if (start_config_manager(cur_event)) {
|
||
|
|
+ send_audit_event(
|
||
|
|
+ AUDIT_DAEMON_CONFIG,
|
||
|
|
+ "op=reconfigure state=no-change "
|
||
|
|
+ "auid=-1 pid=-1 subj=? res=failed");
|
||
|
|
+ hup_flag = 0;
|
||
|
|
+ }
|
||
|
|
+ }
|
||
|
|
+ else
|
||
|
|
+ {
|
||
|
|
+ send_audit_event(
|
||
|
|
+ AUDIT_DAEMON_CONFIG,
|
||
|
|
+ "op=reconfigure state=no-change "
|
||
|
|
+ "auid=-1 pid=-1 subj=? res=failed");
|
||
|
|
}
|
||
|
|
cur_event = NULL;
|
||
|
|
hup_info_requested = 0;
|
||
|
|
@@ -565,9 +578,15 @@
|
||
|
|
// Drain the pipe - won't block because libev sets non-blocking mode
|
||
|
|
read(pipefds[0], buf, sizeof(buf));
|
||
|
|
enqueue_event(reconfig_ev);
|
||
|
|
+ hup_flag = 0;
|
||
|
|
reconfig_ev = NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
+void reconfig_pthread_failed(void)
|
||
|
|
+{
|
||
|
|
+ hup_flag = 0;
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
void reconfig_ready(void)
|
||
|
|
{
|
||
|
|
const char *msg = "ready\n";
|
||
|
|
diff -Nur audit-3.0.org/src/auditd-reconfig.c audit-3.0/src/auditd-reconfig.c
|
||
|
|
--- audit-3.0.org/src/auditd-reconfig.c 2019-07-30 09:29:49.420000000 +0800
|
||
|
|
+++ audit-3.0/src/auditd-reconfig.c 2019-07-30 10:00:05.232000000 +0800
|
||
|
|
@@ -35,6 +35,7 @@
|
||
|
|
|
||
|
|
/* externs we need to know about */
|
||
|
|
extern void reconfig_ready(void);
|
||
|
|
+extern void reconfig_pthread_failed(void);
|
||
|
|
|
||
|
|
/* This is the configuration manager code */
|
||
|
|
static pthread_t config_thread;
|
||
|
|
@@ -125,6 +126,7 @@
|
||
|
|
//send_audit_event(AUDIT_DAEMON_CONFIG, txt);
|
||
|
|
free_config(&new_config);
|
||
|
|
free(e);
|
||
|
|
+ reconfig_pthread_failed();
|
||
|
|
}
|
||
|
|
|
||
|
|
pthread_mutex_unlock(&config_lock);
|