Remove unnecessary code from be_lo_put()
authorPeter Eisentraut
Thu, 25 Apr 2024 08:08:07 +0000 (10:08 +0200)
committerPeter Eisentraut
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 
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));