changeset 1924:667937351c31

Fix tilde expansion of paths (Part was missed from previous series of commits)
author Matt Johnston <matt@ucc.asn.au>
date Wed, 30 Mar 2022 14:08:15 +0800
parents ffa0f666fde2
children 7ac3b6c380b1
files dbutil.c default_options.h
diffstat 2 files changed, 9 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/dbutil.c	Thu Jul 09 22:06:26 2020 +1000
+++ b/dbutil.c	Wed Mar 30 14:08:15 2022 +0800
@@ -633,11 +633,11 @@
 	}
 }
 
-/* Returns malloced path. inpath beginning with '/' is returned as-is,
-otherwise home directory is prepended */
+/* Returns malloced path. inpath beginning with '~/' expanded,
+   otherwise returned as-is */
 char * expand_homedir_path(const char *inpath) {
 	struct passwd *pw = NULL;
-	if (inpath[0] != '/') {
+	if (strncmp(inpath, "~/", 2) == 0) {
 		char *homedir = getenv("HOME");
 
 		if (!homedir) {
@@ -648,9 +648,9 @@
 		}
 
 		if (homedir) {
-			int len = strlen(inpath) + strlen(homedir) + 2;
+			int len = strlen(inpath)-2 + strlen(homedir) + 2;
 			char *buf = m_malloc(len);
-			snprintf(buf, len, "%s/%s", homedir, inpath);
+			snprintf(buf, len, "%s/%s", homedir, inpath+2);
 			return buf;
 		}
 	}
--- a/default_options.h	Thu Jul 09 22:06:26 2020 +1000
+++ b/default_options.h	Wed Mar 30 14:08:15 2022 +0800
@@ -19,7 +19,7 @@
 #define DROPBEAR_DEFADDRESS ""
 
 /* Default hostkey paths - these can be specified on the command line.
- * Homedir is prepended if path begins with ~
+ * Homedir is prepended if path begins with ~/
  */
 #define DSS_PRIV_FILENAME "/etc/dropbear/dropbear_dss_host_key"
 #define RSA_PRIV_FILENAME "/etc/dropbear/dropbear_rsa_host_key"
@@ -238,7 +238,7 @@
 #define DROPBEAR_CLI_PUBKEY_AUTH 1
 
 /* A default argument for dbclient -i <privatekey>.
- * Homedir is prepended if path begins with ~
+ * Homedir is prepended if path begins with ~/
  */
 #define DROPBEAR_DEFAULT_CLI_AUTHKEY "~/.ssh/id_dropbear"
 
@@ -283,7 +283,7 @@
 
 /* The default file to store the daemon's process ID, for shutdown
  * scripts etc. This can be overridden with the -P flag.
- * Homedir is prepended if path begins with ~
+ * Homedir is prepended if path begins with ~/
  */
 #define DROPBEAR_PIDFILE "/var/run/dropbear.pid"
 
@@ -295,7 +295,7 @@
 /* If you want to enable running an sftp server (such as the one included with
  * OpenSSH), set the path below and set DROPBEAR_SFTPSERVER.
  * The sftp-server program is not provided by Dropbear itself.
- * Homedir is prepended if path begins with ~
+ * Homedir is prepended if path begins with ~/
  */
 #define DROPBEAR_SFTPSERVER 1
 #define SFTPSERVER_PATH "/usr/libexec/sftp-server"