mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
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:
parent
6c59886942
commit
ea43fec258
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user