Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitef17de2

Browse files
authored
Merge pull request#18 from kulaginm/stable9_6-CVE-2020-14350
FixCVE-2020-14350
2 parents2a703c6 +a2d8c3d commitef17de2

File tree

6 files changed

+215
-52
lines changed

6 files changed

+215
-52
lines changed

‎.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,3 @@ regression.out
88
*.gcov
99
tags
1010

11-
aqo--?.?.sql

‎Makefile

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@ REGRESS =aqo_disabled \
1313
aqo_intelligent\
1414
aqo_forced\
1515
aqo_learn\
16-
schema
16+
schema\
17+
aqo_CVE-2020-14350
1718

1819
EXTRA_REGRESS_OPTS=--temp-config=$(top_srcdir)/$(subdir)/conf.add
1920

20-
DATA = aqo--1.0.sql aqo--1.0--1.1.sql
21-
DATA_built = aqo--1.1.sql
22-
23-
TAP_TESTS = 1
21+
DATA = aqo--1.0.sql aqo--1.0--1.1.sql aqo--1.1.sql
2422

2523
MODULE_big = aqo
2624
ifdefUSE_PGXS
@@ -34,6 +32,3 @@ include $(top_builddir)/src/Makefile.global
3432
include$(top_srcdir)/contrib/contrib-global.mk
3533
endif
3634

37-
38-
$(DATA_built):$(DATA)
39-
cat$+>$@

‎aqo--1.1.sql

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
2+
\echo Use"CREATE EXTENSION aqo" to load this file. \quit
3+
4+
CREATETABLEpublic.aqo_queries (
5+
query_hashintCONSTRAINT aqo_queries_query_hash_idxPRIMARY KEY,
6+
learn_aqobooleanNOT NULL,
7+
use_aqobooleanNOT NULL,
8+
fspace_hashintNOT NULL,
9+
auto_tuningbooleanNOT NULL
10+
);
11+
12+
CREATETABLEpublic.aqo_query_texts (
13+
query_hashintCONSTRAINT aqo_query_texts_query_hash_idxPRIMARY KEYREFERENCESpublic.aqo_queriesON DELETE CASCADE,
14+
query_texttextNOT NULL
15+
);
16+
17+
CREATETABLEpublic.aqo_query_stat (
18+
query_hashintCONSTRAINT aqo_query_stat_idxPRIMARY KEYREFERENCESpublic.aqo_queriesON DELETE CASCADE,
19+
execution_time_with_aqodouble precision[],
20+
execution_time_without_aqodouble precision[],
21+
planning_time_with_aqodouble precision[],
22+
planning_time_without_aqodouble precision[],
23+
cardinality_error_with_aqodouble precision[],
24+
cardinality_error_without_aqodouble precision[],
25+
executions_with_aqobigint,
26+
executions_without_aqobigint
27+
);
28+
29+
CREATETABLEpublic.aqo_data (
30+
fspace_hashintNOT NULLREFERENCESpublic.aqo_queriesON DELETE CASCADE,
31+
fsspace_hashintNOT NULL,
32+
nfeaturesintNOT NULL,
33+
featuresdouble precision[][],
34+
targetsdouble precision[],
35+
UNIQUE (fspace_hash, fsspace_hash)
36+
);
37+
38+
CREATEUNIQUE INDEXaqo_fss_access_idxONpublic.aqo_data (fspace_hash, fsspace_hash);
39+
40+
ALTERTABLEpublic.aqo_data ALTER COLUMN featuresSET STORAGE MAIN;
41+
ALTERTABLEpublic.aqo_data ALTER COLUMN targetsSET STORAGE MAIN;
42+
ALTERTABLEpublic.aqo_query_stat
43+
ALTER COLUMN execution_time_with_aqoSET STORAGE MAIN;
44+
ALTERTABLEpublic.aqo_query_stat
45+
ALTER COLUMN execution_time_without_aqoSET STORAGE MAIN;
46+
ALTERTABLEpublic.aqo_query_stat
47+
ALTER COLUMN planning_time_with_aqoSET STORAGE MAIN;
48+
ALTERTABLEpublic.aqo_query_stat
49+
ALTER COLUMN planning_time_without_aqoSET STORAGE MAIN;
50+
ALTERTABLEpublic.aqo_query_stat
51+
ALTER COLUMN cardinality_error_without_aqoSET STORAGE MAIN;
52+
ALTERTABLEpublic.aqo_query_stat
53+
ALTER COLUMN cardinality_error_with_aqoSET STORAGE MAIN;
54+
55+
INSERT INTOpublic.aqo_queriesVALUES (0, false, false,0, false);
56+
INSERT INTOpublic.aqo_query_textsVALUES (0,'COMMON feature space (do not delete!)');
57+
-- a virtual query for COMMON feature space
58+
59+
CREATEFUNCTIONinvalidate_deactivated_queries_cache() RETURNS trigger
60+
AS'MODULE_PATHNAME' LANGUAGE C;
61+
62+
CREATETRIGGERaqo_queries_invalidate AFTERUPDATEORDELETEOR TRUNCATE
63+
ONpublic.aqo_queries FOR EACH STATEMENT
64+
EXECUTE PROCEDURE invalidate_deactivated_queries_cache();
65+

‎expected/aqo_CVE-2020-14350.out

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* Check fix for CVE-2020-14350.
3+
* See also 7eeb1d986 postgresql commit.
4+
*/
5+
SET client_min_messages = 'warning';
6+
DROP ROLE IF EXISTS regress_hacker;
7+
SET client_min_messages = 'notice';
8+
CREATE ROLE regress_hacker LOGIN;
9+
-- Test 1
10+
RESET ROLE;
11+
ALTER ROLE regress_hacker NOSUPERUSER;
12+
SET ROLE regress_hacker;
13+
SHOW is_superuser;
14+
is_superuser
15+
--------------
16+
off
17+
(1 row)
18+
19+
CREATE FUNCTION format(f text, r regclass, t text)
20+
RETURNS text
21+
AS $$
22+
BEGIN
23+
ALTER ROLE regress_hacker SUPERUSER;
24+
RETURN '';
25+
END
26+
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
27+
RESET ROLE;
28+
CREATE EXTENSION aqo;
29+
-- Test result (must be 'off')
30+
SET ROLE regress_hacker;
31+
SHOW is_superuser;
32+
is_superuser
33+
--------------
34+
off
35+
(1 row)
36+
37+
RESET ROLE;
38+
DROP FUNCTION format(text, regclass, text);
39+
DROP EXTENSION IF EXISTS aqo;
40+
-- Test 2
41+
RESET ROLE;
42+
ALTER ROLE regress_hacker NOSUPERUSER;
43+
SET ROLE regress_hacker;
44+
SHOW is_superuser;
45+
is_superuser
46+
--------------
47+
off
48+
(1 row)
49+
50+
CREATE FUNCTION aqo_migrate_to_1_1_get_pk(rel text)
51+
RETURNS regclass
52+
AS $$
53+
DECLARE
54+
ret regclass;
55+
BEGIN
56+
ALTER ROLE regress_hacker SUPERUSER;
57+
SELECT * FROM aqo_migrate_to_1_1_get_pk(rel::regclass) INTO ret;
58+
RETURN ret;
59+
END
60+
$$ LANGUAGE plpgsql;
61+
RESET ROLE;
62+
CREATE EXTENSION aqo;
63+
-- Test result (must be 'off')
64+
SET ROLE regress_hacker;
65+
SHOW is_superuser;
66+
is_superuser
67+
--------------
68+
off
69+
(1 row)
70+
71+
RESET ROLE;
72+
DROP FUNCTION aqo_migrate_to_1_1_get_pk(text);
73+
DROP EXTENSION IF EXISTS aqo;
74+
-- Cleanup
75+
RESET ROLE;
76+
DROP ROLE regress_hacker;

‎sql/aqo_CVE-2020-14350.sql

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Check fix for CVE-2020-14350.
3+
* See also 7eeb1d986 postgresql commit.
4+
*/
5+
6+
SET client_min_messages='warning';
7+
DROP ROLE IF EXISTS regress_hacker;
8+
SET client_min_messages='notice';
9+
10+
CREATE ROLE regress_hacker LOGIN;
11+
12+
-- Test 1
13+
RESET ROLE;
14+
ALTER ROLE regress_hacker NOSUPERUSER;
15+
16+
SET ROLE regress_hacker;
17+
SHOW is_superuser;
18+
CREATEFUNCTIONformat(ftext, r regclass, ttext)
19+
RETURNStext
20+
AS $$
21+
BEGIN
22+
ALTER ROLE regress_hacker SUPERUSER;
23+
RETURN'';
24+
END
25+
$$ LANGUAGE plpgsql RETURNSNULLONNULL INPUT;
26+
27+
RESET ROLE;
28+
CREATE EXTENSION aqo;
29+
30+
-- Test result (must be 'off')
31+
SET ROLE regress_hacker;
32+
SHOW is_superuser;
33+
34+
RESET ROLE;
35+
DROPFUNCTION format(text, regclass,text);
36+
DROP EXTENSION IF EXISTS aqo;
37+
38+
-- Test 2
39+
RESET ROLE;
40+
ALTER ROLE regress_hacker NOSUPERUSER;
41+
42+
SET ROLE regress_hacker;
43+
SHOW is_superuser;
44+
45+
CREATEFUNCTIONaqo_migrate_to_1_1_get_pk(reltext)
46+
RETURNS regclass
47+
AS $$
48+
DECLARE
49+
ret regclass;
50+
BEGIN
51+
ALTER ROLE regress_hacker SUPERUSER;
52+
SELECT*FROM aqo_migrate_to_1_1_get_pk(rel::regclass) INTO ret;
53+
RETURN ret;
54+
END
55+
$$ LANGUAGE plpgsql;
56+
57+
RESET ROLE;
58+
CREATE EXTENSION aqo;
59+
60+
-- Test result (must be 'off')
61+
SET ROLE regress_hacker;
62+
SHOW is_superuser;
63+
64+
RESET ROLE;
65+
DROPFUNCTION aqo_migrate_to_1_1_get_pk(text);
66+
DROP EXTENSION IF EXISTS aqo;
67+
68+
-- Cleanup
69+
RESET ROLE;
70+
DROP ROLE regress_hacker;
71+

‎t/000_security.pl

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp