X-Git-Url: https://git.saurik.com/apple/syslog.git/blobdiff_plain/5222c21d179b0b291b379bab771199072df3ea35..HEAD:/libsystem_asl.tproj/src/asl_client.c diff --git a/libsystem_asl.tproj/src/asl_client.c b/libsystem_asl.tproj/src/asl_client.c index 7026a50..7aa0455 100644 --- a/libsystem_asl.tproj/src/asl_client.c +++ b/libsystem_asl.tproj/src/asl_client.c @@ -48,7 +48,7 @@ __private_extern__ ASL_STATUS asl_file_open_write_fd(int descriptor, asl_file_t **s); /* private asl SPI */ -__private_extern__ ASL_STATUS asl_client_internal_send(asl_object_t client, asl_object_t msg); +__private_extern__ ASL_STATUS asl_client_internal_send(asl_object_t client, asl_object_t msg, void *addr); #pragma mark - #pragma mark asl_client_t @@ -200,7 +200,7 @@ asl_client_release(asl_client_t *client) ASL_STATUS asl_client_send(asl_client_t *client, asl_msg_t *msg) { - return asl_client_internal_send((asl_object_t)client, (asl_object_t)msg); + return asl_client_internal_send((asl_object_t)client, (asl_object_t)msg, __builtin_return_address(0)); } static asl_msg_list_t * @@ -240,8 +240,9 @@ _do_server_match(asl_msg_list_t *qlist, size_t *last, size_t start, size_t count count64 = count; kstatus = _asl_server_match(asl_server_port, vmstr, len, start64, count64, duration, dir, (caddr_t *)&res, &reslen, &last64, (int *)&status); - *last = last64; + if (kstatus != KERN_SUCCESS) return NULL; + *last = last64; out = asl_msg_list_from_string(res); vm_deallocate(mach_task_self(), (vm_address_t)res, reslen); @@ -545,7 +546,7 @@ _jump_dealloc(asl_object_private_t *obj) } static void -_jump_append(asl_object_private_t *obj, asl_object_private_t *newobj) +_jump_append(asl_object_private_t *obj, asl_object_private_t *newobj, void *addr) { int type = asl_get_type((asl_object_t)newobj); @@ -555,12 +556,12 @@ _jump_append(asl_object_private_t *obj, asl_object_private_t *newobj) asl_msg_list_reset_iteration((asl_msg_list_t *)newobj, 0); while (NULL != (msg = asl_msg_list_next((asl_msg_list_t *)newobj))) { - if (asl_client_internal_send((asl_object_t)obj, (asl_object_t)msg) != ASL_STATUS_OK) return; + if (asl_client_internal_send((asl_object_t)obj, (asl_object_t)msg, addr) != ASL_STATUS_OK) return; } } else if ((type == ASL_TYPE_MSG) || (type == ASL_TYPE_QUERY)) { - asl_client_internal_send((asl_object_t)obj, (asl_object_t)newobj); + asl_client_internal_send((asl_object_t)obj, (asl_object_t)newobj, addr); } }