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

Commitd278541

Browse files
committed
Fix error handling of pg_b64_decode()
Fix for commit761c795. The previous error handling logic was notquite correct.Discussion:https://www.postgresql.org/message-id/flat/CAEudQAq-3yHsSdWoOOaw%2BgAQYgPMpMGuB5pt2yCXgv-YuxG2Hg%40mail.gmail.com
1 parentff030eb commitd278541

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

‎src/interfaces/libpq/fe-connect.c

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,37 +1805,49 @@ pqConnectOptions2(PGconn *conn)
18051805
intlen;
18061806

18071807
len=pg_b64_dec_len(strlen(conn->scram_client_key));
1808-
/* Consider the zero-terminator */
1809-
if (len!=SCRAM_MAX_KEY_LEN+1)
1808+
conn->scram_client_key_binary=malloc(len);
1809+
if (!conn->scram_client_key_binary)
1810+
gotooom_error;
1811+
len=pg_b64_decode(conn->scram_client_key,strlen(conn->scram_client_key),
1812+
conn->scram_client_key_binary,len);
1813+
if (len<0)
1814+
{
1815+
libpq_append_conn_error(conn,"invalid SCRAM client key");
1816+
free(conn->scram_client_key_binary);
1817+
return false;
1818+
}
1819+
if (len!=SCRAM_MAX_KEY_LEN)
18101820
{
18111821
libpq_append_conn_error(conn,"invalid SCRAM client key length: %d",len);
1822+
free(conn->scram_client_key_binary);
18121823
return false;
18131824
}
18141825
conn->scram_client_key_len=len;
1815-
conn->scram_client_key_binary=malloc(len);
1816-
if (!conn->scram_client_key_binary)
1817-
gotooom_error;
1818-
pg_b64_decode(conn->scram_client_key,strlen(conn->scram_client_key),
1819-
conn->scram_client_key_binary,len);
18201826
}
18211827

18221828
if (conn->scram_server_key)
18231829
{
18241830
intlen;
18251831

18261832
len=pg_b64_dec_len(strlen(conn->scram_server_key));
1827-
/* Consider the zero-terminator */
1828-
if (len!=SCRAM_MAX_KEY_LEN+1)
1833+
conn->scram_server_key_binary=malloc(len);
1834+
if (!conn->scram_server_key_binary)
1835+
gotooom_error;
1836+
len=pg_b64_decode(conn->scram_server_key,strlen(conn->scram_server_key),
1837+
conn->scram_server_key_binary,len);
1838+
if (len<0)
1839+
{
1840+
libpq_append_conn_error(conn,"invalid SCRAM server key");
1841+
free(conn->scram_server_key_binary);
1842+
return false;
1843+
}
1844+
if (len!=SCRAM_MAX_KEY_LEN)
18291845
{
18301846
libpq_append_conn_error(conn,"invalid SCRAM server key length: %d",len);
1847+
free(conn->scram_server_key_binary);
18311848
return false;
18321849
}
18331850
conn->scram_server_key_len=len;
1834-
conn->scram_server_key_binary=malloc(len);
1835-
if (!conn->scram_server_key_binary)
1836-
gotooom_error;
1837-
pg_b64_decode(conn->scram_server_key,strlen(conn->scram_server_key),
1838-
conn->scram_server_key_binary,len);
18391851
}
18401852

18411853
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp