summaryrefslogtreecommitdiff
path: root/www/links/patches/patch-aa
blob: 576157807f7d3ef922d97a0d6b502e13d67e1e57 (plain)
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);
 }