diff options
author | Christian Hesse <mail@eworm.de> | 2017-10-30 14:41:57 +0100 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2017-10-30 14:41:57 +0100 |
commit | 3bc54ac0d2950f3c65e20939db98333dcd4df744 (patch) | |
tree | 46bd91f56e6d5438ea7ce1fed8f44dcf657693fa /bin/worker.c | |
parent | d7696f73602c4d5399ad065a3c9dfa26c53f179b (diff) | |
download | mkinitcpio-ykfde-3bc54ac0d2950f3c65e20939db98333dcd4df744.tar.gz mkinitcpio-ykfde-3bc54ac0d2950f3c65e20939db98333dcd4df744.tar.zst |
make sure the worker is run from systemd service
Diffstat (limited to 'bin/worker.c')
-rw-r--r-- | bin/worker.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/bin/worker.c b/bin/worker.c index 470acb2..1ca9233 100644 --- a/bin/worker.c +++ b/bin/worker.c @@ -26,6 +26,8 @@ #include <sys/un.h> #include <unistd.h> +#include <systemd/sd-daemon.h> + #include <iniparser.h> #include <keyutils.h> @@ -350,6 +352,12 @@ int main(int argc, char **argv) { (void) tmp; #endif + /* check that we are running from systemd */ + if (sd_notify(0, "READY=0\nSTATUS=Work in progress...") <= 0) { + fprintf(stderr, "This is expected to run from a systemd service.\n"); + goto out10; + } + /* initialize static memory */ memset(challenge, 0, CHALLENGELEN + 1); memset(passphrase, 0, PASSPHRASELEN + 2); @@ -387,6 +395,9 @@ int main(int argc, char **argv) { if ((rc = walk_askpass(passphrase)) < 0) goto out30; + /* notify systemd about success */ + sd_notify(0, "READY=1\nSTATUS=All done."); + out30: /* release Yubikey */ if (yk_release() == 0) |