Module Name:    src
Committed By:   joerg
Date:           Fri Oct 16 19:01:04 UTC 2009

Modified Files:
        src/distrib/utils/sysinst: net.c

Log Message:
Allow setting an empty base directory. FTP server like tnftpd do not
allow ftp://foo//bar and similar URLs.


To generate a diff of this commit:
cvs rdiff -u -r1.122 -r1.123 src/distrib/utils/sysinst/net.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/utils/sysinst/net.c
diff -u src/distrib/utils/sysinst/net.c:1.122 src/distrib/utils/sysinst/net.c:1.123
--- src/distrib/utils/sysinst/net.c:1.122	Tue Apr  7 11:49:18 2009
+++ src/distrib/utils/sysinst/net.c	Fri Oct 16 19:01:03 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: net.c,v 1.122 2009/04/07 11:49:18 joerg Exp $	*/
+/*	$NetBSD: net.c,v 1.123 2009/10/16 19:01:03 joerg Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -932,7 +932,7 @@
 	const char *ftp_opt;
 	char ftp_user_encoded[STRSIZE];
 	char ftp_dir_encoded[STRSIZE];
-	char *cp;
+	char *cp, *set_dir2;
 	int rval;
 
 	/*
@@ -965,9 +965,14 @@
 	cp = url_encode(ftp_dir_encoded, ftp.dir,
 			ftp_dir_encoded + sizeof ftp_dir_encoded - 1,
 			RFC1738_SAFE_LESS_SHELL_PLUS_SLASH, 1);
-	if (set_dir[0] != '/')
+	if (cp != ftp_dir_encoded && cp[-1] != '/')
 		*cp++ = '/';
-	url_encode(cp, set_dir,
+
+	set_dir2 = set_dir;
+	while (*set_dir2 == '/')
+		++set_dir2;
+
+	url_encode(cp, set_dir2,
 			ftp_dir_encoded + sizeof ftp_dir_encoded,
 			RFC1738_SAFE_LESS_SHELL_PLUS_SLASH, 0);
 

Reply via email to