From ab8dbe67bbaa04e46e05d11fd5a924575d592b98 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 29 Apr 2002 22:53:44 +0000 Subject: [PATCH] (gamegrid-add-score-with-update-game-score): Test whether or not update-game-score is setuid, and do the right thing. --- lisp/play/gamegrid.el | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el index aff6a9bdec8..054358940d0 100644 --- a/lisp/play/gamegrid.el +++ b/lisp/play/gamegrid.el @@ -413,18 +413,24 @@ static char *noname[] = { (gamegrid-add-score-with-update-game-score file score)))) (defun gamegrid-add-score-with-update-game-score (file score) - (let ((result nil) - (errbuf (generate-new-buffer " *update-game-score loss*")) - (target (if game-score-directory - file - (let ((f (expand-file-name "~/.emacs.d/games"))) - (unless (eq (car-safe (file-attributes f)) - t) - (make-directory f)) - (setq f (expand-file-name file f)) - (unless (file-exists-p f) - (write-region "" nil f nil 'silent nil 'excl)) - f)))) + (let* ((result nil) + (errbuf (generate-new-buffer " *update-game-score loss*")) + (have-shared-game-dir + (not (zerop (logand (file-modes + (expand-file-name "update-game-score" + exec-directory)) + #o4000)))) + (target (if have-shared-game-dir + (expand-file-name file game-score-directory) + (let ((f (expand-file-name game-score-directory))) + (when (file-writable-p f) + (unless (eq (car-safe (file-attributes f)) + t) + (make-directory f)) + (setq f (expand-file-name file f)) + (unless (file-exists-p f) + (write-region "" nil f nil 'silent nil 'excl))) + f)))) (let ((default-directory "/")) (apply 'call-process @@ -432,7 +438,8 @@ static char *noname[] = { (list (expand-file-name "update-game-score" exec-directory) nil errbuf nil - "-m" (int-to-string gamegrid-score-file-length) file + "-m" (int-to-string gamegrid-score-file-length) + "-d" (expand-file-name game-score-directory) file (int-to-string score) (concat (user-full-name) -- 2.39.2