mirror of https://github.com/postgres/postgres
Fix buffer overrun after incomplete read in pullf_read_max().
Most callers pass a stack buffer. The ensuing stack smash can crash the server, and we have not ruled out the viability of attacks that lead to privilege escalation. Back-patch to 9.0 (all supported versions). Marko Tiikkaja Security: CVE-2015-0243
This commit is contained in:
parent
29725b3db6
commit
1dc7551586
|
@ -74,5 +74,6 @@ from encdata order by id;
|
|||
2C226E1FFE5CC7D4
|
||||
B68504FD128E1FF9
|
||||
FD0206C409B74875
|
||||
(4 rows)
|
||||
FD0206C409B74875
|
||||
(5 rows)
|
||||
|
||||
|
|
|
@ -564,6 +564,27 @@ GQ==
|
|||
=XHkF
|
||||
-----END PGP MESSAGE-----
|
||||
');
|
||||
-- rsaenc2048 / aes128 (not from gnupg)
|
||||
insert into encdata (id, data) values (5, '
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
wcBMA/0CBsQJt0h1AQgAzxZ8j+OTeZ8IlLxfZ/mVd28/gUsCY+xigWBk/anZlK3T
|
||||
p2tNU2idHzKdAttH2Hu/PWbZp4kwjl9spezYxMqCeBZqtfGED88Y+rqK0n/ul30A
|
||||
7jjFHaw0XUOqFNlST1v6H2i7UXndnp+kcLfHPhnO5BIYWxB2CYBehItqtrn75eqr
|
||||
C7trGzU/cr74efcWagbCDSNjiAV7GlEptlzmgVMmNikyI6w0ojEUx8lCLc/OsFz9
|
||||
pJUAX8xuwjxDVv+W7xk6c96grQiQlm+FLDYGiGNXoAzx3Wi/howu3uV40dXfY+jx
|
||||
3WBrhEew5Pkpt1SsWoFnJWOfJ8GLd0ec8vfRCqAIVdLgAeS7NyawQYtd6wuVrEAj
|
||||
5SMg4Thb4d+g45RksuGLHUUr4qO9tiXglODa4InhmJfgNuLk+RGz4LXjq8wepEmW
|
||||
vRbgFOG54+Cf4C/gC+HkreDm5JKSKjvvw4B/jC6CDxq+JoziEe2Z1uEjCuEcr+Es
|
||||
/eGzeOi36BejXPMHeKxXejj5qBBHKV0pHVhZSgffR0TtlXdB967Yl/5agV0R89hI
|
||||
7Gw52emfnH4Z0Y4V0au2H0k1dR/2IxXdJEWSTG7Be1JHT59p9ei2gSEOrdBMIOjP
|
||||
tbYYUlmmbvD49bHfThkDiC+oc9947LgQsk3kOOLbNHcjkbrjH8R5kjII4m/SEZA1
|
||||
g09T+338SzevBcVXh/cFrQ6/Et+lyyO2LJRUMs69g/HyzJOVWT2Iu8E0eS9MWevY
|
||||
Qtrkrhrpkl3Y02qEp/j6M03Yu2t6ZF7dp51aJ5VhO2mmmtHaTnCyCc8Fcf72LmD8
|
||||
blH2nKZC9d6fi4YzSYMepZpMOFR65M80MCMiDUGnZBB8sEADu2/iVtqDUeG8mAA=
|
||||
=PHJ1
|
||||
-----END PGP MESSAGE-----
|
||||
');
|
||||
-- successful decrypt
|
||||
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
|
||||
from keytbl, encdata where keytbl.id=1 and encdata.id=1;
|
||||
|
@ -629,3 +650,7 @@ from keytbl, encdata where keytbl.id=5 and encdata.id=1;
|
|||
Secret msg
|
||||
(1 row)
|
||||
|
||||
-- test for a short read from prefix_init
|
||||
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
|
||||
from keytbl, encdata where keytbl.id=6 and encdata.id=5;
|
||||
ERROR: Wrong key or corrupt data
|
||||
|
|
|
@ -305,6 +305,7 @@ pullf_read_max(PullFilter *pf, int len, uint8 **data_p, uint8 *tmpbuf)
|
|||
break;
|
||||
memcpy(tmpbuf + total, tmp, res);
|
||||
total += res;
|
||||
len -= res;
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
|
|
@ -579,6 +579,28 @@ GQ==
|
|||
-----END PGP MESSAGE-----
|
||||
');
|
||||
|
||||
-- rsaenc2048 / aes128 (not from gnupg)
|
||||
insert into encdata (id, data) values (5, '
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
wcBMA/0CBsQJt0h1AQgAzxZ8j+OTeZ8IlLxfZ/mVd28/gUsCY+xigWBk/anZlK3T
|
||||
p2tNU2idHzKdAttH2Hu/PWbZp4kwjl9spezYxMqCeBZqtfGED88Y+rqK0n/ul30A
|
||||
7jjFHaw0XUOqFNlST1v6H2i7UXndnp+kcLfHPhnO5BIYWxB2CYBehItqtrn75eqr
|
||||
C7trGzU/cr74efcWagbCDSNjiAV7GlEptlzmgVMmNikyI6w0ojEUx8lCLc/OsFz9
|
||||
pJUAX8xuwjxDVv+W7xk6c96grQiQlm+FLDYGiGNXoAzx3Wi/howu3uV40dXfY+jx
|
||||
3WBrhEew5Pkpt1SsWoFnJWOfJ8GLd0ec8vfRCqAIVdLgAeS7NyawQYtd6wuVrEAj
|
||||
5SMg4Thb4d+g45RksuGLHUUr4qO9tiXglODa4InhmJfgNuLk+RGz4LXjq8wepEmW
|
||||
vRbgFOG54+Cf4C/gC+HkreDm5JKSKjvvw4B/jC6CDxq+JoziEe2Z1uEjCuEcr+Es
|
||||
/eGzeOi36BejXPMHeKxXejj5qBBHKV0pHVhZSgffR0TtlXdB967Yl/5agV0R89hI
|
||||
7Gw52emfnH4Z0Y4V0au2H0k1dR/2IxXdJEWSTG7Be1JHT59p9ei2gSEOrdBMIOjP
|
||||
tbYYUlmmbvD49bHfThkDiC+oc9947LgQsk3kOOLbNHcjkbrjH8R5kjII4m/SEZA1
|
||||
g09T+338SzevBcVXh/cFrQ6/Et+lyyO2LJRUMs69g/HyzJOVWT2Iu8E0eS9MWevY
|
||||
Qtrkrhrpkl3Y02qEp/j6M03Yu2t6ZF7dp51aJ5VhO2mmmtHaTnCyCc8Fcf72LmD8
|
||||
blH2nKZC9d6fi4YzSYMepZpMOFR65M80MCMiDUGnZBB8sEADu2/iVtqDUeG8mAA=
|
||||
=PHJ1
|
||||
-----END PGP MESSAGE-----
|
||||
');
|
||||
|
||||
-- successful decrypt
|
||||
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
|
||||
from keytbl, encdata where keytbl.id=1 and encdata.id=1;
|
||||
|
@ -619,3 +641,7 @@ from keytbl, encdata where keytbl.id=5 and encdata.id=1;
|
|||
-- password-protected secret key, right password
|
||||
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool')
|
||||
from keytbl, encdata where keytbl.id=5 and encdata.id=1;
|
||||
|
||||
-- test for a short read from prefix_init
|
||||
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
|
||||
from keytbl, encdata where keytbl.id=6 and encdata.id=5;
|
||||
|
|
Loading…
Reference in New Issue