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

Commit7cbd944

Browse files
committed
Fix some minor resource leaks in PerformRadiusTransaction().
Failure to free serveraddrs pointed out by Coverity, failure to closesocket noted by code-reading. These bugs seem to be quite old, butgiven the low probability of taking these error-exit paths and theminimal consequences of the leaks (since the process would presumablyexit shortly anyway), it doesn't seem worth back-patching.Michael Paquier and Tom Lane
1 parentd77f014 commit7cbd944

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

‎src/backend/libpq/auth.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2793,6 +2793,7 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
27932793
{
27942794
ereport(LOG,
27952795
(errmsg("could not generate random encryption vector")));
2796+
pg_freeaddrinfo_all(hint.ai_family,serveraddrs);
27962797
returnSTATUS_ERROR;
27972798
}
27982799
packet->id=packet->vector[0];
@@ -2827,6 +2828,7 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
28272828
ereport(LOG,
28282829
(errmsg("could not perform MD5 encryption of password")));
28292830
pfree(cryptvector);
2831+
pg_freeaddrinfo_all(hint.ai_family,serveraddrs);
28302832
returnSTATUS_ERROR;
28312833
}
28322834

@@ -2842,7 +2844,7 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
28422844

28432845
radius_add_attribute(packet,RADIUS_PASSWORD,encryptedpassword,encryptedpasswordlen);
28442846

2845-
/* Lengthneed to be in network order on the wire */
2847+
/* Lengthneeds to be in network order on the wire */
28462848
packetlength=packet->length;
28472849
packet->length=htons(packet->length);
28482850

@@ -2868,6 +2870,7 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
28682870
localaddr.sin_addr.s_addr=INADDR_ANY;
28692871
addrsize=sizeof(structsockaddr_in);
28702872
#endif
2873+
28712874
if (bind(sock, (structsockaddr*)&localaddr,addrsize))
28722875
{
28732876
ereport(LOG,
@@ -2964,6 +2967,7 @@ PerformRadiusTransaction(char *server, char *secret, char *portstr, char *identi
29642967
{
29652968
ereport(LOG,
29662969
(errmsg("could not read RADIUS response: %m")));
2970+
closesocket(sock);
29672971
returnSTATUS_ERROR;
29682972
}
29692973

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp