From c8dfc69ea66b9bda201a32fe874add2ab06f6fb7 Mon Sep 17 00:00:00 2001 From: Apple Date: Sat, 29 Oct 2016 01:04:27 +0000 Subject: [PATCH] syslog-349.30.2.tar.gz --- .gitignore | 13 +++++++++++++ syslogd.tproj/asl_action.c | 18 ++++++++++++++++++ syslogd.tproj/daemon.h | 1 + syslogd.tproj/dbserver.c | 15 ++++----------- 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b1daa3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +/DerivedData + +# / +/build + +# /syslog.xcodeproj/ +/syslog.xcodeproj/*.xcworkspace +/syslog.xcodeproj/xcuserdata +/syslog.xcodeproj/*.mode1v3 +/syslog.xcodeproj/*.mode2v3 +/syslog.xcodeproj/*.pbxuser +/syslog.xcodeproj/*.perspectivev3 diff --git a/syslogd.tproj/asl_action.c b/syslogd.tproj/asl_action.c index 249321a..05c2d10 100644 --- a/syslogd.tproj/asl_action.c +++ b/syslogd.tproj/asl_action.c @@ -2458,3 +2458,21 @@ asl_action_file_checkpoint(const char *module, const char *path) return 0; } + +void +asl_action_out_module_query(asl_msg_t *q, asl_msg_t *m, bool all) +{ + dispatch_sync(asl_action_queue, ^{ + asl_out_module_t *om; + const char *val; + for (om = global.asl_out_module; om != NULL; om = om->next) + { + if (all || (0 == asl_msg_lookup(q, om->name, NULL, NULL))) + { + val = om->flags & MODULE_FLAG_ENABLED ? "enabled" : "disabled"; + if (om->name == NULL) asl_msg_set_key_val(m, "asl.conf", val); + else asl_msg_set_key_val(m, om->name, val); + } + } + }); +} diff --git a/syslogd.tproj/daemon.h b/syslogd.tproj/daemon.h index 106059b..4646c3d 100644 --- a/syslogd.tproj/daemon.h +++ b/syslogd.tproj/daemon.h @@ -199,6 +199,7 @@ void asl_out_message(asl_msg_t *msg, int64_t msize); void bsd_out_message(asl_msg_t *msg, int64_t msize); int control_set_param(const char *s, bool eval); int asl_action_control_set_param(const char *s); +void asl_action_out_module_query(asl_msg_t *q, asl_msg_t *m, bool all); /* notify SPI */ uint32_t notify_register_plain(const char *name, int *out_token); diff --git a/syslogd.tproj/dbserver.c b/syslogd.tproj/dbserver.c index ae8a6d4..7c355b6 100644 --- a/syslogd.tproj/dbserver.c +++ b/syslogd.tproj/dbserver.c @@ -821,7 +821,6 @@ syslogd_state_query(asl_msg_t *q, asl_msg_list_t **res, uid_t uid) asl_msg_t *m; char val[256]; const char *mval; - asl_out_module_t *om; if (res == NULL) return ASL_STATUS_INVALID_ARG; *res = NULL; @@ -1001,15 +1000,8 @@ syslogd_state_query(asl_msg_t *q, asl_msg_list_t **res, uid_t uid) } } - for (om = global.asl_out_module; om != NULL; om = om->next) - { - if (all || (0 == asl_msg_lookup(q, om->name, NULL, NULL))) - { - snprintf(val, sizeof(val), "%s", om->flags & MODULE_FLAG_ENABLED ? "enabled" : "disabled"); - if (om->name == NULL) asl_msg_set_key_val(m, "asl.conf", val); - else asl_msg_set_key_val(m, om->name, val); - } - } + /* output module query must be on the asl_action_queue */ + asl_action_out_module_query(q, m, all); /* synchronous actions use queries, since messages are simpleroutines */ if (0 == asl_msg_lookup(q, "action", &mval, NULL)) @@ -1183,7 +1175,8 @@ database_server() abort(); } - if (request->head.msgh_id == MACH_NOTIFY_DEAD_NAME) + if (request->head.msgh_local_port == global.dead_session_port && + request->head.msgh_id == MACH_NOTIFY_DEAD_NAME) { deadname = (mach_dead_name_notification_t *)request; dispatch_async(asl_server_queue, ^{ -- 2.47.2