# HG changeset patch # User Colin Walters # Date 1020120824 0 # Node ID 78b836bc2213964a068ba3f879a5bc5ea8b80535 # Parent 964839c0844c5d0c133c9f5a3f0091095d07d318 (gamegrid-add-score-with-update-game-score): Test whether or not update-game-score is setuid, and do the right thing. diff -r 964839c0844c -r 78b836bc2213 lisp/play/gamegrid.el --- a/lisp/play/gamegrid.el Mon Apr 29 22:50:36 2002 +0000 +++ b/lisp/play/gamegrid.el Mon Apr 29 22:53:44 2002 +0000 @@ -413,18 +413,24 @@ (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 @@ (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)