fix wrong status code when an ACL check fails in vfs_open

Fri, 30 May 2025 11:20:12 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 30 May 2025 11:20:12 +0200
changeset 593
d83dced6dd80
parent 592
2839d5e28c75
child 594
36a46311e0f6

fix wrong status code when an ACL check fails in vfs_open

src/server/daemon/vfs.c file | annotate | diff | comparison | revisions
--- a/src/server/daemon/vfs.c	Fri May 30 09:51:23 2025 +0200
+++ b/src/server/daemon/vfs.c	Fri May 30 11:20:12 2025 +0200
@@ -377,6 +377,7 @@
     if(sysacl.acl) {
         if(!fs_acl_check(&sysacl, ctx->user, path, access_mask)) {
             acl_set_error_status(ctx->sn, ctx->rq, sysacl.acl, ctx->user);
+            ctx->error_response_set = TRUE;
             return NULL;
         }
     }
@@ -625,6 +626,7 @@
         
         if(acl) {
             acl_set_error_status(ctx->sn, ctx->rq, acl, ctx->user);
+            ctx->error_response_set = TRUE;
             return 1;
         }
     }
@@ -634,7 +636,7 @@
 
 void sys_set_error_status(VFSContext *ctx) {
     if(ctx->sn && ctx->rq && !ctx->error_response_set) {
-        int status = util_errno2status(ctx->vfs_errno);
+        int status = ctx->vfs_errno != 0 ? util_errno2status(ctx->vfs_errno) : 500;
         protocol_status(ctx->sn, ctx->rq, status, NULL);
         ctx->error_response_set = TRUE;
     }

mercurial