diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-02-24 17:11:48 -0700 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-02-24 17:11:48 -0700 |
commit | e13ae9d582f6bfdb1ae394a3231181b4d1c8903a (patch) | |
tree | fb18707dc0712692c7ef9e6ad55202b6986d6743 | |
parent | ab5edd3b2219ec267348baed9647694e6f2ede3f (diff) | |
download | keyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.tar.gz keyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.tar.bz2 keyper-e13ae9d582f6bfdb1ae394a3231181b4d1c8903a.zip |
Change keyper to force use of absolute paths
-rw-r--r-- | keyper.c | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -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); |