[erlang-patches] Fwd: xmerl ftp URI parsing patch
Lars Thorsen
lars@REDACTED
Fri Aug 28 11:54:52 CEST 2009
Thanks for the patch. We'll include it in R13B02.
Best regards,
/Lars , Erlang/OTP Ericsson
>
>
> -------- Original Message --------
> Subject: [erlang-patches] Fwd: xmerl ftp URI parsing patch
> Date: Wed, 26 Aug 2009 14:59:06 -0400
> From: Steve Vinoski <vinoski@REDACTED>
> To: erlang-patches@REDACTED
> References: <65b2728e0907152154l6679ca16m114e376ea0d07e63@REDACTED>
>
> I haven't seen any replies to the patch below, and given that I sent it
> during the height of summer holidays and also given recent problems I've
> had
> sending to these mailing lists, I thought I'd resend just in case.
> --steve
>
> ---------- Forwarded message ----------
> From: Steve Vinoski <vinoski@REDACTED>
> Date: Thu, Jul 16, 2009 at 12:54 AM
> Subject: xmerl ftp URI parsing patch
> To: erlang-bugs@REDACTED
>
>
> The xmerl_uri:parse function can't handle FTP URIs containing username
> and password. Also, the default FTP port constant in xmerl_uri.erl is
> wrong. Here's a patch against R13B01 that I believe remedies these
> issues. I tried to write it to match the style of the other code in
> that file.
>
> I manually ran a few of the W3C XML schema URI test FTP URIs against
> this and they all looked good. Note, though, that this patch doesn't
> handle encoded :, @, or / characters appearing within the username or
> password fields as required by RFC 1738. Note also that I left the
> "FIXME" comment in the code, but with these changes you might want to
> consider removing it.
>
> These changes also work for R12B-5 but the line offsets are different.
>
> --steve
>
> --- otp_src_R13B01/lib/xmerl/src/xmerl_uri.erl 2009-03-12
> 08:27:06.000000000 -0400
> +++ xmerl_uri.erl 2009-07-16 00:44:27.000000000 -0400
> @@ -120,7 +120,7 @@
>
> %%%
> ............................................................................
>
> %%% FIXME!!! This is just a quick hack that doesn't work!
> --define(FTP_DEFAULT_PORT, 80).
> +-define(FTP_DEFAULT_PORT, 21).
>
> %%% FTP (Source RFC 2396, RFC 1738, RFC 959)
> %%% Note: This BNF has been modified to better fit with RFC 2396
> @@ -155,9 +155,21 @@
> end.
>
> ftp_userinfo(C0) ->
> - User="",
> - Password="",
> - {C0,{User,Password}}.
> + ftp_userinfo(C0,0,[],[],[]).
> +ftp_userinfo([],_,Acc,User,Passwd) ->
> + {lists:reverse(Acc),{User,Passwd}};
> +ftp_userinfo(C0=[$/|_],_,Acc,User,Passwd) ->
> + {lists:reverse(Acc)++C0,{User,Passwd}};
> +ftp_userinfo([$@|C0],1,Acc,User,[]) ->
> + {C0,{User,lists:reverse(Acc)}};
> +ftp_userinfo([$@|C0],0,Acc,[],[]) ->
> + {C0,{lists:reverse(Acc),""}};
> +ftp_userinfo([$:|_],0,[],[],[]) ->
> + {error,no_user};
> +ftp_userinfo([$:|C0],0,Acc,[],[]) ->
> + ftp_userinfo(C0,1,[],lists:reverse(Acc),[]);
> +ftp_userinfo([C|C0],Stage,Acc,User,Passwd) ->
> + ftp_userinfo(C0,Stage,[C|Acc],User,Passwd).
>
>
> %%%
> .........................................................................
>
More information about the erlang-patches
mailing list