From c5ddb7dd56d9eb71cbe0430bcf85596d298caef8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 27 Sep 2016 14:18:26 +0200 Subject: [PATCH] Move useSetUID to pam_usb, the only place where it's used --- pkgs/build-support/trivial-builders.nix | 26 -------------------- pkgs/os-specific/linux/pam_usb/default.nix | 28 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix index 692ac685d62..398426bf9a4 100644 --- a/pkgs/build-support/trivial-builders.nix +++ b/pkgs/build-support/trivial-builders.nix @@ -148,32 +148,6 @@ rec { }; - # Search in the environment if the same program exists with a set uid or - # set gid bit. If it exists, run the first program found, otherwise run - # the default binary. - useSetUID = drv: path: - let - name = baseNameOf path; - bin = "${drv}${path}"; - in assert name != ""; - writeScript "setUID-${name}" '' - #!${stdenv.shell} - inode=$(stat -Lc %i ${bin}) - for file in $(type -ap ${name}); do - case $(stat -Lc %a $file) in - ([2-7][0-7][0-7][0-7]) - if test -r "$file".real; then - orig=$(cat "$file".real) - if test $inode = $(stat -Lc %i "$orig"); then - exec "$file" "$@" - fi - fi;; - esac - done - exec ${bin} "$@" - ''; - - # Copy a path to the Nix store. # Nix automatically copies files to the store before stringifying paths. # If you need the store path of a file, ${copyPathToStore } can be diff --git a/pkgs/os-specific/linux/pam_usb/default.nix b/pkgs/os-specific/linux/pam_usb/default.nix index a96e951bf9b..cedb9bca1a0 100644 --- a/pkgs/os-specific/linux/pam_usb/default.nix +++ b/pkgs/os-specific/linux/pam_usb/default.nix @@ -1,6 +1,32 @@ -{stdenv, fetchurl, makeWrapper, useSetUID, dbus, libxml2, pam, pkgconfig, pmount, pythonPackages}: +{ stdenv, fetchurl, makeWrapper, useSetUID, dbus, libxml2, pam, pkgconfig, pmount, pythonPackages, writeScript }: let + + # Search in the environment if the same program exists with a set uid or + # set gid bit. If it exists, run the first program found, otherwise run + # the default binary. + useSetUID = drv: path: + let + name = baseNameOf path; + bin = "${drv}${path}"; + in assert name != ""; + writeScript "setUID-${name}" '' + #!${stdenv.shell} + inode=$(stat -Lc %i ${bin}) + for file in $(type -ap ${name}); do + case $(stat -Lc %a $file) in + ([2-7][0-7][0-7][0-7]) + if test -r "$file".real; then + orig=$(cat "$file".real) + if test $inode = $(stat -Lc %i "$orig"); then + exec "$file" "$@" + fi + fi;; + esac + done + exec ${bin} "$@" + ''; + pmountBin = useSetUID pmount "/bin/pmount"; pumountBin = useSetUID pmount "/bin/pumount"; inherit (pythonPackages) python dbus-python;