From 76556aff21d129b2bc4dd7b28e5c74b5e5743dab Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 24 Mar 2020 19:45:35 +0000
Subject: [PATCH] Guest (G-restricted) accounts don't get persistent
 properties: - always return the default value from the get() method - always
 return true from the set() method (don't write anything) Thanks to the
 anonymous YouTube BBS reviewer for highlighting this problem (i.e.
 Minesweeper used the preferences of the last Guest user to run it)

---
 exec/load/userprops.js | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/exec/load/userprops.js b/exec/load/userprops.js
index dae14f3ee9..5f303dd947 100644
--- a/exec/load/userprops.js
+++ b/exec/load/userprops.js
@@ -1,5 +1,7 @@
 // $Id$
 
+require("userdefs.js", 'UFLAG_G');
+
 function filename(usernum)
 {
 	return system.data_dir + format("user/%04u.ini", usernum);
@@ -7,8 +9,11 @@ function filename(usernum)
 
 function get(section, key, deflt, usernum)
 {
-	if(!usernum)
+	if(!usernum) {
 		usernum = user.number;
+		if(user.security.restrictions & UFLAG_G)
+			return deflt;
+	}
 	var file = new File(filename(usernum));
 	if(!file.open('r'))
 		return deflt;
@@ -25,8 +30,11 @@ function get(section, key, deflt, usernum)
 
 function set(section, key, value, usernum)
 {
-	if(!usernum)
+	if(!usernum) {
 		usernum = user.number;
+		if(user.security.restrictions & UFLAG_G)
+			return true;
+	}
 	var file = new File(filename(usernum));
 	if(!file.open(file.exists ? 'r+':'w+'))
 		return false;
-- 
GitLab