[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-641-g65b4cb2

Günther Deschner gd at samba.org
Fri Apr 4 07:59:21 GMT 2008


The branch, v3-2-test has been updated
       via  65b4cb20ea3fb806cfd50281e08f32bea70fafce (commit)
       via  352f8440c74bc22416e21783e1dc5fecf5869902 (commit)
       via  c7ae1a9b53ef578cf4dfdf8e05915817c69896b5 (commit)
       via  f550cdb6f240830ee1e3a2dfe5f4128bca0cf836 (commit)
      from  37091859126167e84e55afe8a32025ac0f65065e (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 65b4cb20ea3fb806cfd50281e08f32bea70fafce
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 4 02:53:40 2008 +0200

    Use sid_array_from_info3 in lookup_usergroups_cached().
    
    Guenther

commit 352f8440c74bc22416e21783e1dc5fecf5869902
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 4 01:44:43 2008 +0200

    Always uppercase cli->srv_name_slash.
    
    Not that I think it is of any importance...
    
    Guenther

commit c7ae1a9b53ef578cf4dfdf8e05915817c69896b5
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 4 01:44:16 2008 +0200

    Remove some dead code in rpcclient.
    
    Guenther

commit f550cdb6f240830ee1e3a2dfe5f4128bca0cf836
Author: Günther Deschner <gd at samba.org>
Date:   Fri Apr 4 01:40:29 2008 +0200

    Move rpccli_try_samr_connects out of rpcclient.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/auth/auth_util.c         |    2 +-
 source/lib/util_sid.c           |    9 ++-
 source/libsmb/cliconnect.c      |    1 +
 source/rpc_client/cli_samr.c    |   44 ++++++++++
 source/rpcclient/cmd_samr.c     |  176 +++++++++++++++++----------------------
 source/winbindd/winbindd_pam.c  |    2 +-
 source/winbindd/winbindd_util.c |   50 ++---------
 7 files changed, 143 insertions(+), 141 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c
index a95a59e..7013285 100644
--- a/source/auth/auth_util.c
+++ b/source/auth/auth_util.c
@@ -1620,7 +1620,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
 	nt_status = sid_array_from_info3(result, info3,
 					 &result->sids,
 					 &result->num_sids,
-					 False);
+					 false, false);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		TALLOC_FREE(result);
 		return nt_status;
diff --git a/source/lib/util_sid.c b/source/lib/util_sid.c
index fd2e93a..6b83f9c 100644
--- a/source/lib/util_sid.c
+++ b/source/lib/util_sid.c
@@ -668,7 +668,8 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
 			      const struct netr_SamInfo3 *info3,
 			      DOM_SID **user_sids,
 			      size_t *num_user_sids,
-			      bool include_user_group_rid)
+			      bool include_user_group_rid,
+			      bool skip_ressource_groups)
 {
 	NTSTATUS status;
 	DOM_SID sid;
@@ -728,6 +729,12 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
          */
 
 	for (i = 0; i < info3->sidcount; i++) {
+
+		if (skip_ressource_groups &&
+		    (info3->sids[i].attributes & SE_GROUP_RESOURCE)) {
+			continue;
+		}
+
 		status = add_sid_to_array(mem_ctx, info3->sids[i].sid,
 				      &sid_array, &num_sids);
 		if (!NT_STATUS_IS_OK(status)) {
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 5e8a586..8bdc284 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -1486,6 +1486,7 @@ NTSTATUS cli_connect(struct cli_state *cli,
 
 	fstrcpy(cli->desthost, host);
 	fstr_sprintf(cli->srv_name_slash, "\\\\%s", cli->desthost);
+	strupper_m(cli->srv_name_slash);
 
 	/* allow hostnames of the form NAME#xx and do a netbios lookup */
 	if ((p = strchr(cli->desthost, '#'))) {
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index f0763cc..fd4fbfc 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -225,3 +225,47 @@ void get_query_dispinfo_params(int loop_count, uint32 *max_entries,
 		break;
 	}
 }
+
+NTSTATUS rpccli_try_samr_connects(struct rpc_pipe_client *cli,
+				  TALLOC_CTX *mem_ctx,
+				  uint32_t access_mask,
+				  POLICY_HND *connect_pol)
+{
+	NTSTATUS status;
+	union samr_ConnectInfo info_in, info_out;
+	struct samr_ConnectInfo1 info1;
+	uint32_t lvl_out = 0;
+
+	ZERO_STRUCT(info1);
+
+	info1.client_version = SAMR_CONNECT_W2K;
+	info_in.info1 = info1;
+
+	status = rpccli_samr_Connect5(cli, mem_ctx,
+				      cli->cli->srv_name_slash,
+				      access_mask,
+				      1,
+				      &info_in,
+				      &lvl_out,
+				      &info_out,
+				      connect_pol);
+	if (NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	status = rpccli_samr_Connect4(cli, mem_ctx,
+				      cli->cli->srv_name_slash,
+				      SAMR_CONNECT_W2K,
+				      access_mask,
+				      connect_pol);
+	if (NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	status = rpccli_samr_Connect2(cli, mem_ctx,
+				      cli->cli->srv_name_slash,
+				      access_mask,
+				      connect_pol);
+	return status;
+}
+
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 9cc47d1..e58354d 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -264,28 +264,6 @@ static void display_sam_info_5(struct samr_DispEntryAscii *r)
 	printf("Account: %s\n", r->account_name.string);
 }
 
-/****************************************************************************
- Try samr_connect4 first, then samr_connect2 if it fails
- ****************************************************************************/
-static NTSTATUS try_samr_connects(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  uint32 access_mask, POLICY_HND *connect_pol)
-{
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
-	result = rpccli_samr_Connect4(cli, mem_ctx,
-				      cli->cli->desthost,
-				      SAMR_CONNECT_W2K,
-				      access_mask,
-				      connect_pol);
-	if (!NT_STATUS_IS_OK(result)) {
-		result = rpccli_samr_Connect2(cli, mem_ctx,
-					      cli->cli->desthost,
-					      access_mask,
-					      connect_pol);
-	}
-	return result;
-}
-
 /**********************************************************************
  * Query user information
  */
@@ -298,7 +276,6 @@ static NTSTATUS cmd_samr_query_user(struct rpc_pipe_client *cli,
 	uint32 info_level = 21;
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
 	union samr_UserInfo *info = NULL;
-	fstring server;
 	uint32 user_rid = 0;
 
 	if ((argc < 2) || (argc > 4)) {
@@ -315,11 +292,9 @@ static NTSTATUS cmd_samr_query_user(struct rpc_pipe_client *cli,
 		sscanf(argv[3], "%x", &access_mask);
 
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -489,7 +464,6 @@ static NTSTATUS cmd_samr_query_group(struct rpc_pipe_client *cli,
 	enum samr_GroupInfoEnum info_level = GROUPINFOALL;
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
 	union samr_GroupInfo *group_info = NULL;
-	fstring			server;
 	uint32 group_rid;
 
 	if ((argc < 2) || (argc > 4)) {
@@ -505,11 +479,9 @@ static NTSTATUS cmd_samr_query_group(struct rpc_pipe_client *cli,
 	if (argc > 3)
 		sscanf(argv[3], "%x", &access_mask);
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -562,7 +534,6 @@ static NTSTATUS cmd_samr_query_usergroups(struct rpc_pipe_client *cli,
 	uint32 			user_rid;
 	uint32			access_mask = MAXIMUM_ALLOWED_ACCESS;
 	int 			i;
-	fstring			server;
 	struct samr_RidWithAttributeArray *rid_array = NULL;
 
 	if ((argc < 2) || (argc > 3)) {
@@ -575,11 +546,9 @@ static NTSTATUS cmd_samr_query_usergroups(struct rpc_pipe_client *cli,
 	if (argc > 2)
 		sscanf(argv[2], "%x", &access_mask);
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -633,7 +602,6 @@ static NTSTATUS cmd_samr_query_useraliases(struct rpc_pipe_client *cli,
 	size_t                     num_sids;
 	uint32			access_mask = MAXIMUM_ALLOWED_ACCESS;
 	int 			i;
-	fstring			server;
 	struct lsa_SidArray sid_array;
 	struct samr_Ids alias_rids;
 
@@ -674,11 +642,9 @@ static NTSTATUS cmd_samr_query_useraliases(struct rpc_pipe_client *cli,
 
 	sid_array.num_sids = num_sids;
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -730,7 +696,6 @@ static NTSTATUS cmd_samr_query_groupmem(struct rpc_pipe_client *cli,
 	uint32 group_rid;
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
 	int i;
-	fstring			server;
 	unsigned int old_timeout;
 	struct samr_RidTypeArray *rids = NULL;
 
@@ -744,11 +709,9 @@ static NTSTATUS cmd_samr_query_groupmem(struct rpc_pipe_client *cli,
 	if (argc > 2)
 		sscanf(argv[2], "%x", &access_mask);
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -822,8 +785,9 @@ static NTSTATUS cmd_samr_enum_dom_users(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -901,8 +865,9 @@ static NTSTATUS cmd_samr_enum_dom_groups(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -978,8 +943,9 @@ static NTSTATUS cmd_samr_enum_als_groups(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1065,9 +1031,9 @@ static NTSTATUS cmd_samr_enum_domains(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx,
-				   access_mask,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  access_mask,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		goto done;
@@ -1131,8 +1097,9 @@ static NTSTATUS cmd_samr_query_aliasmem(struct rpc_pipe_client *cli,
 
 	/* Open SAMR handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1219,9 +1186,9 @@ static NTSTATUS cmd_samr_query_aliasinfo(struct rpc_pipe_client *cli,
 
 	/* Open SAMR handle */
 
-	result = try_samr_connects(cli, mem_ctx,
-				   SEC_FLAG_MAXIMUM_ALLOWED,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  SEC_FLAG_MAXIMUM_ALLOWED,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		goto done;
@@ -1317,8 +1284,9 @@ static NTSTATUS cmd_samr_delete_alias(struct rpc_pipe_client *cli,
 
 	/* Open SAMR handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1428,8 +1396,9 @@ static NTSTATUS cmd_samr_query_dispinfo_internal(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1602,8 +1571,9 @@ static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1705,8 +1675,9 @@ static NTSTATUS cmd_samr_create_dom_user(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1780,8 +1751,9 @@ static NTSTATUS cmd_samr_create_dom_group(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1845,8 +1817,9 @@ static NTSTATUS cmd_samr_create_dom_alias(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1909,8 +1882,9 @@ static NTSTATUS cmd_samr_lookup_names(struct rpc_pipe_client *cli,
 
 	/* Get sam policy and domain handles */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1991,8 +1965,9 @@ static NTSTATUS cmd_samr_lookup_rids(struct rpc_pipe_client *cli,
 
 	/* Get sam policy and domain handles */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2073,8 +2048,9 @@ static NTSTATUS cmd_samr_delete_dom_group(struct rpc_pipe_client *cli,
 
 	/* Get sam policy and domain handles */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2153,8 +2129,9 @@ static NTSTATUS cmd_samr_delete_dom_user(struct rpc_pipe_client *cli,
 
 	/* Get sam policy and domain handles */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2224,7 +2201,6 @@ static NTSTATUS cmd_samr_query_sec_obj(struct rpc_pipe_client *cli,
 	POLICY_HND connect_pol, domain_pol, user_pol, *pol;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	uint32 sec_info = DACL_SECURITY_INFORMATION;
-	fstring server;
 	uint32 user_rid = 0;
 	TALLOC_CTX *ctx = NULL;
 	SEC_DESC_BUF *sec_desc_buf=NULL;
@@ -2250,10 +2226,9 @@ static NTSTATUS cmd_samr_query_sec_obj(struct rpc_pipe_client *cli,
 		sec_info = atoi(argv[2]);
 	}
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2324,8 +2299,9 @@ static NTSTATUS cmd_samr_get_usrdom_pwinfo(struct rpc_pipe_client *cli,
 
 	sscanf(argv[1], "%i", &rid);
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		goto done;
@@ -2412,7 +2388,9 @@ static NTSTATUS cmd_samr_lookup_domain(struct rpc_pipe_client *cli,
 
 	init_lsa_String(&domain_name, argv[1]);
 
-	result = try_samr_connects(cli, mem_ctx, access_mask, &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  access_mask,
+					  &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2465,8 +2443,9 @@ static NTSTATUS cmd_samr_chgpasswd2(struct rpc_pipe_client *cli,
 
 	/* Get sam policy handle */
 
-	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
-				   &connect_pol);
+	result = rpccli_try_samr_connects(cli, mem_ctx,
+					  MAXIMUM_ALLOWED_ACCESS,
+					  &connect_pol);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list