aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-02-24 17:11:48 -0700
committerJosh Rahm <joshuarahm@gmail.com>2023-02-24 17:11:48 -0700
commite13ae9d582f6bfdb1ae394a3231181b4d1c8903a (patch)
treefb18707dc0712692c7ef9e6ad55202b6986d6743
parentab5edd3b2219ec267348baed9647694e6f2ede3f (diff)
downloadkeyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.tar.gz
keyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.tar.bz2
keyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.zip
Change keyper to force use of absolute paths
-rw-r--r--keyper.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/keyper.c b/keyper.c
index a3338c3..7595619 100644
--- a/keyper.c
+++ b/keyper.c
@@ -34,10 +34,18 @@ static int dump_file(const char* fname)
int main(int argc, char** argv)
{
const char* file = getenv("KEYPER_FILE");
- const char* disable_file = getenv("KEYPER_DISABLE_FILE");
-
- if (!disable_file) {
- disable_file="keyper-disable";
+ const char* disable_file_env = getenv("KEYPER_DISABLE_FILE");
+ char disable_file[4096];
+
+ if (!disable_file_env) {
+ const char* home = getenv("HOME");
+ if (!home) {
+ fprintf(stderr, "No $HOME environment variable\n");
+ return 2;
+ }
+ snprintf(disable_file, sizeof(disable_file) - 1, "%s/keyper-disable", home);
+ } else {
+ strncpy(disable_file, disable_file_env, sizeof(disable_file) - 1);
}
if (!file) {
@@ -45,6 +53,16 @@ int main(int argc, char** argv)
return 1;
}
+ if (disable_file[0] != '/') {
+ fprintf(stderr, "$KEYPER_DISABLE_FILE must be an absolute path!\n");
+ return 1;
+ }
+
+ if (file[0] != '/') {
+ fprintf(stderr, "$KEYPER_FILE must be an absolute path!\n");
+ return 1;
+ }
+
struct stat statbuf;
if (!stat(disable_file, &statbuf)) {
fprintf(stderr, "Keyper disabled because %s exists.\n", disable_file);