Fix an assertion failure when running PERMISSIONS with the --safer option
authorJohn Darrington <john@cellform.com>
Sun, 2 Jun 2024 09:43:27 +0000 (11:43 +0200)
committerJohn Darrington <john@cellform.com>
Sun, 2 Jun 2024 10:11:06 +0000 (12:11 +0200)
Partial fix for bug #65545

src/language/commands/permissions.c
tests/language/commands/permissions.at

index 77b55a13e5a189c68372fd5297a5ea610d7fa95a..b529321988596d78cead38363e6ac5ee5bb45852 100644 (file)
@@ -48,7 +48,7 @@ cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED)
       lex_next_error (lexer, -1, -1,
                       _("This command not allowed when the %s option is set."),
                       "SAFER");
-      return 0;
+      return CMD_FAILURE;
     }
 
   char  *fn = NULL;
index 23a1f1298e5b96ef67e70abcf0a2e28a3e17dfd6..2e339eb0abcf6b698592d6ae6622563cf4211cb9 100644 (file)
@@ -41,6 +41,27 @@ AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-rw-r--r--
 AT_CLEANUP
 
 
+dnl The PERMISSIONS command should be unavailable when --safer is given
+AT_SETUP([PERMISSIONS - safer mode])
+AT_DATA([a-file], [Hello
+])
+
+chmod 444 a-file
+AT_CHECK([ls -l a-file], [0], [stdout])
+AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-r--r--r--
+])
+
+AT_DATA([permissions.sps], [PERMISSIONS /FILE='a-file' PERMISSIONS=WRITEABLE.
+])
+AT_CHECK([pspp -O format=csv permissions.sps --safer], [1], [dnl
+"permissions.sps:1.1-1.11: error: PERMISSIONS: This command not allowed when the SAFER option is set.
+    1 | PERMISSIONS /FILE='a-file' PERMISSIONS=WRITEABLE.
+      | ^~~~~~~~~~~"
+])
+AT_CHECK([ls -l a-file], [0], [stdout])
+AT_CHECK([sed 's/^\(..........\).*/\1/' stdout], [0], [-r--r--r--
+])
+AT_CLEANUP
 
 AT_SETUP([PERMISSIONS - bad syntax])
 AT_DATA([pe.sps], [[PERMI|SIONS /FILE='foobar' PERMISSIONS=WRITEABLE.