summaryrefslogtreecommitdiffstats
path: root/loader
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>2000-04-24 19:31:45 +0000
committerErik Troan <ewt@redhat.com>2000-04-24 19:31:45 +0000
commit24b545681ba66f05404993011c90632f91596e2a (patch)
tree1c13113c9ee7c70513b4e430e37f100d2b5fbb72 /loader
parentcc50919d096eb72765031f831aa71cfe0c9636c4 (diff)
downloadanaconda-24b545681ba66f05404993011c90632f91596e2a.tar.gz
anaconda-24b545681ba66f05404993011c90632f91596e2a.tar.xz
anaconda-24b545681ba66f05404993011c90632f91596e2a.zip
need to % expand passwords
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/loader/loader.c b/loader/loader.c
index fc781366d..38de60a1b 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1017,20 +1017,28 @@ static char * mountUrlImage(struct installMethod * method,
}
i = 0;
+ login = "";
/* password w/o login isn't usefull */
- if (strlen(ui.login)) {
+ if (ui.login && strlen(ui.login)) {
i += strlen(ui.login) + 5;
if (strlen(ui.password))
- i += strlen(ui.password) + 5;
+ i += 3*strlen(ui.password) + 5;
+
if (ui.login || ui.password) {
login = alloca(i);
- sprintf(login, "%s%s%s@",
- ui.login,
- ui.password ? ":" : "",
- ui.password ? ui.password : "");
+ strcpy(login, ui.login);
+ if (ui.password) {
+ char * chptr;
+ char code[4];
+
+ strcat(login, ":");
+ for (chptr = ui.password; *chptr; chptr++) {
+ sprintf(code, "%%%2x", *chptr);
+ strcat(login, code);
+ }
+ strcat(login, "@");
+ }
}
- } else {
- login = "";
}
url = malloc(strlen(ui.prefix) + 25 + strlen(ui.address) + strlen(login));