summaryrefslogtreecommitdiff
path: root/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2025-01-20 10:01:46 +0100
committerLibravatar GitHub <noreply@github.com>2025-01-20 10:01:46 +0100
commitcfe6ac5a42e8d21d3db9a7aff3ac862f401cbf01 (patch)
tree20f9e46b0f1c8e896bded5363f578c1c32523286 /vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go
parent[chore]: Bump github.com/gin-contrib/sessions from 1.0.1 to 1.0.2 (#3664) (diff)
downloadgotosocial-cfe6ac5a42e8d21d3db9a7aff3ac862f401cbf01.tar.xz
[chore]: Bump github.com/jackc/pgx/v5 from 5.7.1 to 5.7.2 (#3663)
Bumps [github.com/jackc/pgx/v5](https://github.com/jackc/pgx) from 5.7.1 to 5.7.2. - [Changelog](https://github.com/jackc/pgx/blob/master/CHANGELOG.md) - [Commits](https://github.com/jackc/pgx/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: github.com/jackc/pgx/v5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go')
-rw-r--r--vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go b/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go
index b41abbe10..056e547cd 100644
--- a/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go
+++ b/vendor/github.com/jackc/pgx/v5/pgproto3/frontend.go
@@ -54,6 +54,7 @@ type Frontend struct {
portalSuspended PortalSuspended
bodyLen int
+ maxBodyLen int // maxBodyLen is the maximum length of a message body in octets. If a message body exceeds this length, Receive will return an error.
msgType byte
partialMsg bool
authType uint32
@@ -317,6 +318,9 @@ func (f *Frontend) Receive() (BackendMessage, error) {
}
f.bodyLen = msgLength - 4
+ if f.maxBodyLen > 0 && f.bodyLen > f.maxBodyLen {
+ return nil, &ExceededMaxBodyLenErr{f.maxBodyLen, f.bodyLen}
+ }
f.partialMsg = true
}
@@ -452,3 +456,13 @@ func (f *Frontend) GetAuthType() uint32 {
func (f *Frontend) ReadBufferLen() int {
return f.cr.wp - f.cr.rp
}
+
+// SetMaxBodyLen sets the maximum length of a message body in octets.
+// If a message body exceeds this length, Receive will return an error.
+// This is useful for protecting against a corrupted server that sends
+// messages with incorrect length, which can cause memory exhaustion.
+// The default value is 0.
+// If maxBodyLen is 0, then no maximum is enforced.
+func (f *Frontend) SetMaxBodyLen(maxBodyLen int) {
+ f.maxBodyLen = maxBodyLen
+}