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

Commit5f3aa30

Browse files
Avoid potential pfree on NULL on OpenSSL errors
Guard against the pointer being NULL before pfreeing upon an errorreturned from OpenSSL. Also handle errors from X509_NAME_print_exwhich can return -1 on memory allocation errors.Backpatch down to v15 where the code was added.Author: Sergey Shinderuk <s.shinderuk@postgrespro.ru>Discussion:https://postgr.es/m/8db5374d-32e0-6abb-d402-40762511eff2@postgrespro.ruBackpatch-through: v15
1 parente59fcbd commit5f3aa30

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

‎src/backend/libpq/be-secure-openssl.c

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -620,8 +620,11 @@ be_tls_open_server(Port *port)
620620
bio=BIO_new(BIO_s_mem());
621621
if (!bio)
622622
{
623-
pfree(port->peer_cn);
624-
port->peer_cn=NULL;
623+
if (port->peer_cn!=NULL)
624+
{
625+
pfree(port->peer_cn);
626+
port->peer_cn=NULL;
627+
}
625628
return-1;
626629
}
627630

@@ -632,12 +635,15 @@ be_tls_open_server(Port *port)
632635
* which make regular expression matching a bit easier. Also note that
633636
* it prints the Subject fields in reverse order.
634637
*/
635-
X509_NAME_print_ex(bio,x509name,0,XN_FLAG_RFC2253);
636-
if (BIO_get_mem_ptr(bio,&bio_buf) <=0)
638+
if (X509_NAME_print_ex(bio,x509name,0,XN_FLAG_RFC2253)==-1||
639+
BIO_get_mem_ptr(bio,&bio_buf) <=0)
637640
{
638641
BIO_free(bio);
639-
pfree(port->peer_cn);
640-
port->peer_cn=NULL;
642+
if (port->peer_cn!=NULL)
643+
{
644+
pfree(port->peer_cn);
645+
port->peer_cn=NULL;
646+
}
641647
return-1;
642648
}
643649
peer_dn=MemoryContextAlloc(TopMemoryContext,bio_buf->length+1);
@@ -651,8 +657,11 @@ be_tls_open_server(Port *port)
651657
(errcode(ERRCODE_PROTOCOL_VIOLATION),
652658
errmsg("SSL certificate's distinguished name contains embedded null")));
653659
pfree(peer_dn);
654-
pfree(port->peer_cn);
655-
port->peer_cn=NULL;
660+
if (port->peer_cn!=NULL)
661+
{
662+
pfree(port->peer_cn);
663+
port->peer_cn=NULL;
664+
}
656665
return-1;
657666
}
658667

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp