[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/direct_...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/direct_... |
Date: |
Thu, 08 Apr 2010 19:01:35 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Changes by: spiralvoice <spiralvoice> 10/04/08 19:01:35
Modified files:
distrib : ChangeLog
src/networks/direct_connect: dcShared.ml
src/utils/xml-light: xml.ml xml.mli
Log message:
patch #6959 - dcXmpEscape2.patch
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1420&r2=1.1421
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/direct_connect/dcShared.ml?cvsroot=mldonkey&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/xml-light/xml.ml?cvsroot=mldonkey&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/xml-light/xml.mli?cvsroot=mldonkey&r1=1.1&r2=1.2
Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1420
retrieving revision 1.1421
diff -u -b -r1.1420 -r1.1421
--- distrib/ChangeLog 4 Apr 2010 09:16:01 -0000 1.1420
+++ distrib/ChangeLog 8 Apr 2010 19:01:34 -0000 1.1421
@@ -14,6 +14,10 @@
ChangeLog
=========
+2010/04/08
+6959: DC: Fix invalid XML (ygrek)
+- enhanced patch (use Xml.escape and properly escape attributes in
Xml.to_string)
+
2010/04/04
7153: BT: correctly handle failed tracker requests (ygrek)
7155: DC: understand hublist.xml (ygrek)
Index: src/networks/direct_connect/dcShared.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/direct_connect/dcShared.ml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/networks/direct_connect/dcShared.ml 22 Oct 2009 20:02:08 -0000
1.3
+++ src/networks/direct_connect/dcShared.ml 8 Apr 2010 19:01:34 -0000
1.4
@@ -79,28 +79,22 @@
let make_xml_mylist () =
let buf = Buffer.create 1000 in
Printf.bprintf buf "<?xml version=\"1.0\" encoding=\"utf-8\"
standalone=\"yes\"?>\r\n";
- Printf.bprintf buf "<FileListing Version=\"1\" CID=\"1,0,2,3,4,5,6\"
Base=\"/\" Generator=\"MLDC-%s\">\r\n" Autoconf.current_version;
+ Printf.bprintf buf "<FileListing Version=\"1\" CID=\"1,0,2,3,4,5,6\"
Base=\"/\" Generator=\"MLDC-%s\">\r\n" (Xml.escape Autoconf.current_version);
let rec iter ntabs node =
let dirname = node.shared_dirname in
let ntabs =
if dirname = "" then ntabs else begin
buf_tabs buf ntabs;
let dir = dirname in
- (* Escape some special XML characters that may appear in the dirname *)
- let dir = Str.global_replace (Str.regexp "'") "'" dir in
- let dir = Str.global_replace (Str.regexp "&") "&" dir in
- Printf.bprintf buf "<Directory Name=\"%s\">\r\n" dir;
+ Printf.bprintf buf "<Directory Name=\"%s\">\r\n" (Xml.escape dir);
ntabs+1
end
in
List.iter (fun dcsh ->
buf_tabs buf ntabs;
let fname = Filename2.basename dcsh.dc_shared_codedname in
- (* Escape some special XML characters that may appear in the filename *)
- let fname = Str.global_replace (Str.regexp "'") "'" fname in
- let fname = Str.global_replace (Str.regexp "&") "&" fname in
- Printf.bprintf buf "<File Name=\"%s\" Size=\"%Ld\" TTH=\"%s\"/>\r\n"
fname
- dcsh.dc_shared_size dcsh.dc_shared_tiger_root
+ Printf.bprintf buf "<File Name=\"%s\" Size=\"%Ld\" TTH=\"%s\"/>\r\n"
(Xml.escape fname)
+ dcsh.dc_shared_size (Xml.escape dcsh.dc_shared_tiger_root)
) node.shared_files;
List.iter (fun (_, node) ->
iter ntabs node;
Index: src/utils/xml-light/xml.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/xml-light/xml.ml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/utils/xml-light/xml.ml 26 Jan 2006 10:40:01 -0000 1.2
+++ src/utils/xml-light/xml.ml 8 Apr 2010 19:01:34 -0000 1.3
@@ -125,35 +125,34 @@
| Element (_,_,clist) -> List.fold_left f v clist
| x -> raise (Not_element x)
-let tmp = Buffer.create 200
-
-let buffer_pcdata text =
+let buffer_escape b text =
let l = String.length text in
for p = 0 to l-1 do
match text.[p] with
- | '>' -> Buffer.add_string tmp ">"
- | '<' -> Buffer.add_string tmp "<"
- | '&' ->
- if p < l-1 && text.[p+1] = '#' then
- Buffer.add_char tmp '&'
- else
- Buffer.add_string tmp "&"
- | '\'' -> Buffer.add_string tmp "'"
- | '"' -> Buffer.add_string tmp """
- | c -> Buffer.add_char tmp c
+ | '>' -> Buffer.add_string b ">"
+ | '<' -> Buffer.add_string b "<"
+ | '&' -> Buffer.add_string b "&"
+ | '\'' -> Buffer.add_string b "'"
+ | '"' -> Buffer.add_string b """
+ | '\x0A' -> Buffer.add_string b "
"
+ | '\x0D' -> Buffer.add_string b "
"
+ | c -> Buffer.add_char b c
done
+let escape s =
+ let b = Buffer.create (String.length s) in
+ buffer_escape b s;
+ Buffer.contents b
+
+let tmp = Buffer.create 200
+
+let buffer_pcdata = buffer_escape tmp
+
let buffer_attr (n,v) =
Buffer.add_char tmp ' ';
Buffer.add_string tmp n;
Buffer.add_string tmp "=\"";
- let l = String.length v in
- for p = 0 to l-1 do
- match v.[p] with
- | '\\' -> Buffer.add_string tmp "\\\\"
- | '"' -> Buffer.add_string tmp "\\\""
- | c -> Buffer.add_char tmp c
- done;
+ buffer_pcdata v;
Buffer.add_char tmp '"'
let to_string x =
Index: src/utils/xml-light/xml.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/xml-light/xml.mli,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/utils/xml-light/xml.mli 29 Jul 2004 10:25:34 -0000 1.1
+++ src/utils/xml-light/xml.mli 8 Apr 2010 19:01:34 -0000 1.2
@@ -144,6 +144,9 @@
any user-readable formating ). *)
val to_string : xml -> string
+(** Escape string as xml pcdata *)
+val escape : string -> string
+
(** Print the xml data structure into an user-readable string with
tabs and lines break between different nodes. *)
val to_string_fmt : xml -> string
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/direct_...,
mldonkey-commits <=