mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-01-27 00:33:34 +00:00
Fix privilege_to_bits function to set 'all' correctly & work with recent postgres
This commit is contained in:
parent
0200ad8269
commit
32a747da8e
@ -774,18 +774,18 @@ DECLARE
|
||||
in_priv TEXT;
|
||||
out_bits BIT(24);
|
||||
i INT;
|
||||
allprivs BIT(24);
|
||||
all_privs BIT(24);
|
||||
start INT;
|
||||
finish INT;
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
allprivs := ~ out_bits;
|
||||
all_privs := ~ out_bits;
|
||||
SELECT array_lower(raw_privs,1) INTO start;
|
||||
SELECT array_upper(raw_privs,1) INTO finish;
|
||||
FOR i IN start .. finish LOOP
|
||||
SELECT out_bits | privilege_to_bits(raw_privs[i]) INTO out_bits;
|
||||
IF out_bits = allprivs THEN
|
||||
RETURN allprivs;
|
||||
IF out_bits = 65535::BIT(24) THEN
|
||||
RETURN all_privs;
|
||||
END IF;
|
||||
END LOOP;
|
||||
RETURN out_bits;
|
||||
|
||||
@ -257,18 +257,18 @@ DECLARE
|
||||
in_priv TEXT;
|
||||
out_bits BIT(24);
|
||||
i INT;
|
||||
all BIT(24);
|
||||
all_privs BIT(24);
|
||||
start INT;
|
||||
finish INT;
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
all := ~ out_bits;
|
||||
all_privs := ~ out_bits;
|
||||
SELECT array_lower(raw_privs,1) INTO start;
|
||||
SELECT array_upper(raw_privs,1) INTO finish;
|
||||
FOR i IN start .. finish LOOP
|
||||
SELECT out_bits | privilege_to_bits(raw_privs[i]) INTO out_bits;
|
||||
IF out_bits = all THEN
|
||||
RETURN all;
|
||||
IF out_bits = 65535::BIT(24) THEN
|
||||
RETURN all_privs;
|
||||
END IF;
|
||||
END LOOP;
|
||||
RETURN out_bits;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user