From 9f148b55f27e1ce78a0cb87b4504a5fb919f168a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Tue, 12 May 2015 16:51:40 +0200 Subject: [PATCH] Bug #3779: Fix 'group' filterflag --- src/pool/PoolSQL.cc | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/pool/PoolSQL.cc b/src/pool/PoolSQL.cc index 5933c651e7..0d4b047647 100644 --- a/src/pool/PoolSQL.cc +++ b/src/pool/PoolSQL.cc @@ -767,12 +767,31 @@ void PoolSQL::usr_filter(int uid, } else if ( filter_flag == RequestManagerPoolInfoFilter::MINE_GROUP ) { - uid_filter << " uid = " << uid; + uid_filter << "uid = " << uid << " OR ( ("; + + string sep = " "; for (g_it = user_groups.begin(); g_it != user_groups.end(); g_it++) { - uid_filter << " OR ( gid = " << *g_it << " AND group_u = 1 )"; + uid_filter << sep << "( gid = " << *g_it << " )"; + sep = " OR "; } + + uid_filter << ")"; + + if ( !all ) + { + uid_filter << " AND ( other_u = 1"; + + for (g_it = user_groups.begin(); g_it != user_groups.end(); g_it++) + { + uid_filter << " OR ( gid = " << *g_it << " AND group_u = 1 )"; + } + + uid_filter << acl_str << ")"; + } + + uid_filter << ")"; } else if ( filter_flag == RequestManagerPoolInfoFilter::ALL ) {