changeset 1134:36557295418e

change DROPBEAR_DEFAULT_CLI_AUTHKEY to just prepend homedir rather than doing ~ expansion
author Matt Johnston <matt@ucc.asn.au>
date Mon, 03 Aug 2015 20:45:04 +0800
parents a9e074b78cd5
children be862d101766
files cli-runopts.c dbutil.c dbutil.h options.h
diffstat 4 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/cli-runopts.c	Tue Jun 23 21:48:13 2015 +0800
+++ b/cli-runopts.c	Mon Aug 03 20:45:04 2015 +0800
@@ -449,7 +449,7 @@
 
 #if defined(DROPBEAR_DEFAULT_CLI_AUTHKEY) && defined(ENABLE_CLI_PUBKEY_AUTH)
 	{
-		char *expand_path = expand_tilde(DROPBEAR_DEFAULT_CLI_AUTHKEY);
+		char *expand_path = expand_homedir_path(DROPBEAR_DEFAULT_CLI_AUTHKEY);
 		loadidentityfile(expand_path, 0);
 		m_free(expand_path);
 	}
--- a/dbutil.c	Tue Jun 23 21:48:13 2015 +0800
+++ b/dbutil.c	Mon Aug 03 20:45:04 2015 +0800
@@ -613,15 +613,16 @@
 	}
 }
 
-/* Returns malloced path. Only expands ~ in first character */
-char * expand_tilde(const char *inpath) {
+/* Returns malloced path. inpath beginning with '/' is returned as-is,
+otherwise home directory is prepended */
+char * expand_homedir_path(const char *inpath) {
 	struct passwd *pw = NULL;
-	if (inpath[0] == '~') {
+	if (inpath[0] != '/') {
 		pw = getpwuid(getuid());
 		if (pw && pw->pw_dir) {
-			int len = strlen(inpath) + strlen(pw->pw_dir) + 1;
+			int len = strlen(inpath) + strlen(pw->pw_dir) + 2;
 			char *buf = m_malloc(len);
-			snprintf(buf, len, "%s/%s", pw->pw_dir, &inpath[1]);
+			snprintf(buf, len, "%s/%s", pw->pw_dir, inpath);
 			return buf;
 		}
 	}
--- a/dbutil.h	Tue Jun 23 21:48:13 2015 +0800
+++ b/dbutil.h	Mon Aug 03 20:45:04 2015 +0800
@@ -97,6 +97,6 @@
 a real-world clock */
 time_t monotonic_now();
 
-char * expand_tilde(const char *inpath);
+char * expand_homedir_path(const char *inpath);
 
 #endif /* DROPBEAR_DBUTIL_H_ */
--- a/options.h	Tue Jun 23 21:48:13 2015 +0800
+++ b/options.h	Mon Aug 03 20:45:04 2015 +0800
@@ -222,8 +222,8 @@
 #define ENABLE_CLI_INTERACT_AUTH
 
 /* A default argument for dbclient -i <privatekey>. 
-   leading "~" is expanded */
-#define DROPBEAR_DEFAULT_CLI_AUTHKEY "~/.ssh/id_dropbear"
+Homedir is prepended unless path begins with / */
+#define DROPBEAR_DEFAULT_CLI_AUTHKEY ".ssh/id_dropbear"
 
 /* This variable can be used to set a password for client
  * authentication on the commandline. Beware of platforms