1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
$NetBSD: patch-aa,v 1.2 2006/04/20 18:34:07 is Exp $
--- session.c.orig Sat Jun 29 21:27:04 2002
+++ session.c
@@ -185,7 +185,7 @@ unsigned char *encode_url(unsigned char
int l = 0;
for (; *url; url++) {
if (is_safe_in_shell(*url) && *url != '+') add_chr_to_str(&u, &l, *url);
- else add_chr_to_str(&u, &l, '+'), add_chr_to_str(&u, &l, hx(*url >> 4)), add_chr_to_str(&u, &l, hx(*url & 0xf));
+ else add_chr_to_str(&u, &l, '%'), add_chr_to_str(&u, &l, hx(*url >> 4)), add_chr_to_str(&u, &l, hx(*url & 0xf));
}
return u;
}
@@ -195,7 +195,7 @@ unsigned char *decode_url(unsigned char
unsigned char *u = init_str();
int l = 0;
for (; *url; url++) {
- if (*url != '+' || unhx(url[1]) == -1 || unhx(url[2]) == -1) add_chr_to_str(&u, &l, *url);
+ if (*url != '%' || unhx(url[1]) == -1 || unhx(url[2]) == -1) add_chr_to_str(&u, &l, *url);
else add_chr_to_str(&u, &l, (unhx(url[1]) << 4) + unhx(url[2])), url += 2;
}
return u;
@@ -2047,6 +2047,13 @@ void goto_url_f(struct session *ses, voi
/* this doesn't send referer */
void goto_url(struct session *ses, unsigned char *url)
{
+ char *p;
+ p = url + strlen(url);
+ do {
+ --p;
+ } while (isspace(*p));
+ *++p = 0;
+
goto_url_f(ses, NULL, url, NULL, NULL, -1, 0, 1, 0);
}
|