From 885b9f3f762cdf18ff358509fd8838f8222b43ba Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Fri, 23 Jul 2021 11:37:25 -0700 Subject: return type in FOREIGN-FUNCALL of geteuid(2) is unsigned Signed-off-by: Sean Whitton --- src/connection/as.lisp | 2 +- src/connection/chroot.lisp | 5 +++-- src/connection/setuid.lisp | 3 ++- src/util.lisp | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/connection/as.lisp b/src/connection/as.lisp index a31a338..229d238 100644 --- a/src/connection/as.lisp +++ b/src/connection/as.lisp @@ -21,7 +21,7 @@ ;; currently we only check whether we're root, but, for example, on Linux, we ;; might have a CAP_* which lets us setuid as non-root (defun can-setuid () - (zerop (foreign-funcall "geteuid" :int))) + (zerop (foreign-funcall "geteuid" :unsigned-int))) (defmethod establish-connection ((type (eql :as)) remaining &key to) "Establish a :SETUID or :SU connection to another user account, depending on diff --git a/src/connection/chroot.lisp b/src/connection/chroot.lisp index b934252..2b2678c 100644 --- a/src/connection/chroot.lisp +++ b/src/connection/chroot.lisp @@ -21,7 +21,7 @@ ;; currently we only check whether we're root, but, for example, on Linux, we ;; might have a CAP_* which lets us chroot as non-root (defun can-chroot () - (zerop (foreign-funcall "geteuid" :int))) + (zerop (foreign-funcall "geteuid" :unsigned-int))) (defmethod establish-connection ((type (eql :chroot)) remaining &key into) (establish-connection (if (and (lisp-connection-p) (can-chroot)) @@ -106,7 +106,8 @@ should be the mount point, without the chroot's root prefixed.") (rehome-connection chroot-connection fork-connection) ()) (defmethod establish-connection ((type (eql :chroot.fork)) remaining &key into) - (unless (and (lisp-connection-p) (zerop (foreign-funcall "geteuid" :int))) + (unless (and (lisp-connection-p) + (zerop (foreign-funcall "geteuid" :unsigned-int))) (error "~&Forking into a chroot requires a Lisp image running as root")) (informat 1 "~&Forking into chroot at ~A" into) (let* ((into* (ensure-directory-pathname into)) diff --git a/src/connection/setuid.lisp b/src/connection/setuid.lisp index 8b3353f..e61222b 100644 --- a/src/connection/setuid.lisp +++ b/src/connection/setuid.lisp @@ -32,7 +32,8 @@ (defclass setuid-connection (rehome-connection fork-connection) ()) (defmethod establish-connection ((type (eql :setuid)) remaining &key to) - (unless (and (lisp-connection-p) (zerop (foreign-funcall "geteuid" :int))) + (unless (and (lisp-connection-p) + (zerop (foreign-funcall "geteuid" :unsigned-int))) (error "~&SETUIDing requires a Lisp image running as root")) (informat 1 "~&SETUIDing to ~A" to) (multiple-value-bind (match groups) diff --git a/src/util.lisp b/src/util.lisp index a6f713a..bedcb52 100644 --- a/src/util.lisp +++ b/src/util.lisp @@ -600,7 +600,7 @@ interactive debugger.")) (defun posix-login-environment (logname home) "Reset the environment after switching UID, or similar, in a :LISP connection. Does not currently establish a PAM session." - (let ((euid (foreign-funcall "geteuid" :int)) + (let ((euid (foreign-funcall "geteuid" :unsigned-int)) (maybe-preserve '("TERM"))) (when (zerop euid) (push "SSH_AUTH_SOCK" maybe-preserve)) -- cgit v1.2.3