From 4314eec4334e21c6c844f6fa93fed653904a50f8 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sun, 11 Dec 2011 15:21:41 -0800 Subject: [PATCH] Fix assumption about orders if columns in pg_shadow --- postgresql/edit_group.cgi | 2 +- postgresql/edit_user.cgi | 5 +++-- postgresql/list_users.cgi | 2 +- postgresql/postgresql-lib.pl | 1 + postgresql/save_group.cgi | 2 +- postgresql/useradmin_update.pl | 4 ++-- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/postgresql/edit_group.cgi b/postgresql/edit_group.cgi index d02567b4c..1f233d304 100755 --- a/postgresql/edit_group.cgi +++ b/postgresql/edit_group.cgi @@ -39,7 +39,7 @@ else { } # Group members -$s = &execute_sql($config{'basedb'}, "select * from pg_shadow"); +$s = &execute_sql($config{'basedb'}, "select $pg_shadow_cols from pg_shadow"); %uidtouser = map { $_->[1], $_->[0] } @{$s->{'data'}}; if (!$in{'new'}) { @mems = map { [ $_, $uidtouser{$_} || $_ ] } &split_array($group[2]); diff --git a/postgresql/edit_user.cgi b/postgresql/edit_user.cgi index 211aef381..17e6591d0 100755 --- a/postgresql/edit_user.cgi +++ b/postgresql/edit_user.cgi @@ -10,8 +10,9 @@ if ($in{'new'}) { } else { &ui_print_header(undef, $text{'user_edit'}, ""); - $s = &execute_sql_safe($config{'basedb'}, "select * from pg_shadow ". - "where usename = '$in{'user'}'"); + $s = &execute_sql_safe($config{'basedb'}, + "select $pg_shadow_cols from pg_shadow ". + "where usename = '$in{'user'}'"); @user = @{$s->{'data'}->[0]}; } diff --git a/postgresql/list_users.cgi b/postgresql/list_users.cgi index fa7ad3e8b..cbbc9c82e 100755 --- a/postgresql/list_users.cgi +++ b/postgresql/list_users.cgi @@ -6,7 +6,7 @@ require './postgresql-lib.pl'; $access{'users'} || &error($text{'user_ecannot'}); &ui_print_header(undef, $text{'user_title'}, "", "list_users"); -$s = &execute_sql_safe($config{'basedb'}, "select * from pg_shadow"); +$s = &execute_sql_safe($config{'basedb'}, "select $pg_shadow_cols from pg_shadow"); print &ui_form_start("delete_users.cgi", "post"); @rowlinks = ( &select_all_link("d", 0), &select_invert_link("d", 0), diff --git a/postgresql/postgresql-lib.pl b/postgresql/postgresql-lib.pl index 963a9e168..b14520b24 100755 --- a/postgresql/postgresql-lib.pl +++ b/postgresql/postgresql-lib.pl @@ -13,6 +13,7 @@ if ($config{'psql'} =~ /^(.*)\/bin\/psql$/ && $1 ne '' && $1 ne '/usr') { $ENV{$gconfig{'ld_env'}} .= ':' if ($ENV{$gconfig{'ld_env'}}); $ENV{$gconfig{'ld_env'}} .= "$1/lib"; } +$pg_shadow_cols = "usename,usesysid,usecreatedb,usesuper,usecatupd,passwd,valuntil"; if ($module_info{'usermin'}) { # Login and password is set by user in Usermin, and the module always diff --git a/postgresql/save_group.cgi b/postgresql/save_group.cgi index 551d1e28b..bec33b8ba 100755 --- a/postgresql/save_group.cgi +++ b/postgresql/save_group.cgi @@ -32,7 +32,7 @@ else { # Actually create or update the group if (&get_postgresql_version() >= 8.0) { # Need to use new create group or modify command - $s = &execute_sql($config{'basedb'}, "select * from pg_shadow"); + $s = &execute_sql($config{'basedb'}, "select $pg_shadow_cols from pg_shadow"); foreach $u (@{$s->{'data'}}) { $umap{$u->[1]} = $u->[0]; } diff --git a/postgresql/useradmin_update.pl b/postgresql/useradmin_update.pl index fd4622bd1..939687964 100755 --- a/postgresql/useradmin_update.pl +++ b/postgresql/useradmin_update.pl @@ -24,7 +24,7 @@ sub useradmin_delete_user { if ($config{'sync_delete'}) { local $s = &execute_sql($config{'basedb'}, - "select * from pg_shadow where usename = '$_[0]->{'user'}'"); + "select $pg_shadow_cols from pg_shadow where usename = '$_[0]->{'user'}'"); return if (!@{$s->{'data'}}); &execute_sql_logged($config{'basedb'}, "drop user \"$_[0]->{'user'}\""); } @@ -36,7 +36,7 @@ sub useradmin_modify_user { if ($config{'sync_modify'}) { local $s = &execute_sql($config{'basedb'}, - "select * from pg_shadow where usename = '$_[0]->{'olduser'}'"); + "select $pg_shadow_cols from pg_shadow where usename = '$_[0]->{'olduser'}'"); return if (!@{$s->{'data'}}); local $version = &get_postgresql_version(); if ($_[0]->{'user'} ne $_[0]->{'olduser'}) {