]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Remove unnecessary code from be_lo_put()
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 25 Apr 2024 08:08:07 +0000 (10:08 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 25 Apr 2024 08:08:07 +0000 (10:08 +0200)
A permission check is performed in be_lo_put() just after returning
from inv_open(), but the permission is already checked in inv_open(),
so we can remove the second check.

This check was added in 8d9881911f0, but then the refactoring in
ae20b23a9e7 should have removed it.

Author: Yugo NAGATA <nagata@sraoss.co.jp>
Discussion: https://www.postgresql.org/message-id/flat/20240424185932.9789628b99a49ec81b020425%40sraoss.co.jp

src/backend/libpq/be-fsstubs.c

index 28ad1c92775263e15a204ea06461751b5b7dc1db..27d317dfdc087fcd7da5c920b6e68291a4c9d262 100644 (file)
@@ -859,18 +859,6 @@ be_lo_put(PG_FUNCTION_ARGS)
 
        lo_cleanup_needed = true;
        loDesc = inv_open(loOid, INV_WRITE, CurrentMemoryContext);
-
-       /* Permission check */
-       if (!lo_compat_privileges &&
-               pg_largeobject_aclcheck_snapshot(loDesc->id,
-                                                                                GetUserId(),
-                                                                                ACL_UPDATE,
-                                                                                loDesc->snapshot) != ACLCHECK_OK)
-               ereport(ERROR,
-                               (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                errmsg("permission denied for large object %u",
-                                               loDesc->id)));
-
        inv_seek(loDesc, offset, SEEK_SET);
        written = inv_write(loDesc, VARDATA_ANY(str), VARSIZE_ANY_EXHDR(str));
        Assert(written == VARSIZE_ANY_EXHDR(str));