Fix problem with new pg_hba.conf code where the same comparison function

was incorrectly used for both qsort and bsearch.
This commit is contained in:
Bruce Momjian 2002-04-28 22:49:07 +00:00
parent 6c59886942
commit ea43fec258
1 changed files with 25 additions and 10 deletions

View File

@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.82 2002/04/25 00:56:36 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.83 2002/04/28 22:49:07 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -335,21 +335,36 @@ tokenize_file(FILE *file)
/*
* Compare two password-file lines on the basis of their user names.
* Compare two lines based on their user/group names.
*
* Used for qsort() sorting and bsearch() lookup.
* Used for qsort() sorting.
*/
static int
user_group_cmp(const void *user, const void *list)
user_group_qsort_cmp(const void *list1, const void *list2)
{
/* first node is line number */
char *user1 = (char *)user;
char *user2 = lfirst(lnext(*(List **)list));
char *user1 = lfirst(lnext(*(List **)list1));
char *user2 = lfirst(lnext(*(List **)list2));
return strcmp(user1, user2);
}
/*
* Compare two lines based on their user/group names.
*
* Used for bsearch() lookup.
*/
static int
user_group_bsearch_cmp(const void *user, const void *list)
{
/* first node is line number */
char *user2 = lfirst(lnext(*(List **)list));
return strcmp(user, user2);
}
/*
* Lookup a group name in the pg_group file
*/
@ -360,7 +375,7 @@ get_group_line(const char *group)
(void *) group_sorted,
group_length,
sizeof(List *),
user_group_cmp);
user_group_bsearch_cmp);
}
@ -374,7 +389,7 @@ get_user_line(const char *user)
(void *) user_sorted,
user_length,
sizeof(List *),
user_group_cmp);
user_group_bsearch_cmp);
}
@ -754,7 +769,7 @@ load_group()
foreach(line, group_lines)
group_sorted[i++] = lfirst(line);
qsort((void *) group_sorted, group_length, sizeof(List *), user_group_cmp);
qsort((void *) group_sorted, group_length, sizeof(List *), user_group_qsort_cmp);
}
else
group_sorted = NULL;
@ -792,7 +807,7 @@ load_user()
foreach(line, user_lines)
user_sorted[i++] = lfirst(line);
qsort((void *) user_sorted, user_length, sizeof(List *), user_group_cmp);
qsort((void *) user_sorted, user_length, sizeof(List *), user_group_qsort_cmp);
}
else
user_sorted = NULL;