From 955187d9fad58e6ec01ac16dc0c7b2b8f5110485 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Thu, 25 Feb 2016 11:25:06 +0200 Subject: [PATCH] Improvements on pathname handling of maxkeys and maxpasswd The default pathname for maxkeys was a hardcoded value and it didn't use the default directory location functions. If encrypted passwords were used nothing was written into the log. --- server/core/maxkeys.c | 6 +++--- server/core/secrets.c | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/server/core/maxkeys.c b/server/core/maxkeys.c index c60ef7698..ddbc7f3f1 100644 --- a/server/core/maxkeys.c +++ b/server/core/maxkeys.c @@ -35,13 +35,13 @@ int main(int argc, char **argv) { - char *keyfile; + const char *keyfile; int rval = 0; if (argc < 2) { - keyfile = "/var/lib/maxscale/"; - fprintf(stderr, "Generating .secrets file in /var/lib/maxscale/ ...\n"); + keyfile = get_datadir(); + fprintf(stderr, "Generating .secrets file in %s ...\n", keyfile); } else { diff --git a/server/core/secrets.c b/server/core/secrets.c index 1cb9b3c4c..09e8e8ba9 100644 --- a/server/core/secrets.c +++ b/server/core/secrets.c @@ -68,7 +68,15 @@ secrets_readKeys(const char* path) if (path != NULL) { - snprintf(secret_file, PATH_MAX, "%s/.secrets", path); + snprintf(secret_file, PATH_MAX, "%s", path); + + char *file; + if ((file = strrchr(secret_file, '.')) == NULL || strcmp(file, ".secrets") != 0) + { + /** This is a possible path to a directory */ + strncat(secret_file, "/.secrets", PATH_MAX); + } + clean_up_pathname(secret_file); } else @@ -201,6 +209,14 @@ secrets_readKeys(const char* path) return NULL; } ss_dassert(keys != NULL); + + /** Successfully loaded keys, log notification */ + if (!reported) + { + MXS_NOTICE("Using encrypted passwords. Encryption key: '%s'.", secret_file); + reported = 1; + } + return keys; }