aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/be-secure-gssapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/libpq/be-secure-gssapi.c')
-rw-r--r--src/backend/libpq/be-secure-gssapi.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/libpq/be-secure-gssapi.c b/src/backend/libpq/be-secure-gssapi.c
index c25cfda0db1..64427f185bb 100644
--- a/src/backend/libpq/be-secure-gssapi.c
+++ b/src/backend/libpq/be-secure-gssapi.c
@@ -215,6 +215,9 @@ be_gssapi_write(Port *port, void *ptr, size_t len)
memcpy(PqGSSSendBuffer + PqGSSSendLength, output.value, output.length);
PqGSSSendLength += output.length;
+
+ /* Release buffer storage allocated by GSSAPI */
+ gss_release_buffer(&minor, &output);
}
/* If we get here, our counters should all match up. */
@@ -371,6 +374,7 @@ be_gssapi_read(Port *port, void *ptr, size_t len)
/* Our receive buffer is now empty, reset it */
PqGSSRecvLength = 0;
+ /* Release buffer storage allocated by GSSAPI */
gss_release_buffer(&minor, &output);
}
@@ -590,7 +594,10 @@ secure_open_gssapi(Port *port)
*/
if (ret < 0 &&
!(errno == EWOULDBLOCK || errno == EAGAIN || errno == EINTR))
+ {
+ gss_release_buffer(&minor, &output);
return -1;
+ }
/* Wait and retry if we couldn't write yet */
if (ret <= 0)