[patch] unicode problem with DJabberd::RosterStorage::SQLite

Aleksey Luzin subscr at p34.net
Fri Jan 23 08:48:32 UTC 2009


Hello,

Is this issue still exists ?
I have fixed russian nicknames corruptions by adding string 
use bytes;
in module IQ.pm

On Friday 26 September 2008 19:25:49 Michael Scherer wrote:
> Le samedi 22 septembre 2007 à 20:56 +0000, Brad Fitzpatrick a écrit :
> > A perl program has to use Perl's UTF8 scalars everywhere, or nowhere,
> > otherwise introducing them (as this patch does) starts the contagious
> > spread of them... whenever one touches a non-UTF8 scalar, perl starts
> > converting the one that's touched.
> >
> > I imagine we do use it, though, as XML libraries tend to use it?
> >
> > So this _should_ be safe and the correct fix (I've seen the same bug,
> > btw), but I want somebody to double-check we are using Perl's UTF-8 for
> > djabberd...
> >
> > Can somebody look at Devel::Peek on a scalar (say a username) when a
> > non-ASCII username comes in, and see if the SvUTF8 flag is on?
>
> Since it seems no one did it, I decided to take a closer look at this
> request, and it seems the UTF8 flags is already set with or without my
> patch :
>
>
> without it :
>
> SV = RV(0x8c64024) at 0x8c64018
>   REFCNT = 1
>   FLAGS = (PADMY,ROK)
>   RV = 0x8e12820
>   SV = PVAV(0x8e61cb8) at 0x8e12820
>     REFCNT = 6
>     FLAGS = (OBJECT,OVERLOAD)
>     STASH = 0x86d7d28	"DJabberd::JID"
>     ARRAY = 0x8eecd18
>     FILL = 5
>     MAX = 11
>     ARYLEN = 0x0
>     FLAGS = (REAL)
>     Elt No. 0
>     SV = PVMG(0x8da44dc) at 0x8e29b40
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8d9b530 "phoebe"\0 [UTF8 "phoebe"]
>       CUR = 6
>       LEN = 8
>     Elt No. 1
>     SV = PVMG(0x8da4300) at 0x8f04940
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8dfb378 "example.org"\0 [UTF8 "example.org"]
>       CUR = 11
>       LEN = 12
>     Elt No. 2
>     SV = PVMG(0x8da4290) at 0x8e29770
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8da1410 "Sisay"\0 [UTF8 "Sisay"]
>       CUR = 5
>       LEN = 8
>     Elt No. 3
>     SV = PV(0x8db6030) at 0x8e38a80
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       PV = 0x8eecd50 "phoebe at example.org/Sisay"\0 [UTF8
> "phoebe at example.org/Sisay"]
>       CUR = 24
>       LEN = 28
>
>
> and with the patch
>
> SV = RV(0x8c642cc) at 0x8c642c0
>   REFCNT = 1
>   FLAGS = (PADMY,ROK)
>   RV = 0x8f83560
>   SV = PVAV(0x8ef2df8) at 0x8f83560
>     REFCNT = 6
>     FLAGS = (OBJECT,OVERLOAD)
>     STASH = 0x86d7d28   "DJabberd::JID"
>     ARRAY = 0x8ef5eb0
>     FILL = 5
>     MAX = 11
>     ARYLEN = 0x0
>     FLAGS = (REAL)
>     Elt No. 0
>     SV = PVMG(0x8e37b08) at 0x8e75188
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8d92f88 "phoebe"\0 [UTF8 "phoebe"]
>       CUR = 6
>       LEN = 8
>
>     Elt No. 1
>     SV = PVMG(0x8eb7cfc) at 0x8f10228
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8ea5568 "example.org"\0 [UTF8 "ephaone.org"]
>       CUR = 11
>       LEN = 12
>     Elt No. 2
>     SV = PVMG(0x8e37aec) at 0x8eed410
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       IV = 0
>       NV = 0
>       PV = 0x8e58dd8 "Sisay"\0 [UTF8 "Sisay"]
>       CUR = 5
>       LEN = 8
>     Elt No. 3
>     SV = PV(0x8de9dc0) at 0x8f02360
>       REFCNT = 1
>       FLAGS = (POK,pPOK,UTF8)
>       PV = 0x8f08a78 "phoebe at example.org/Sisay"\0 [UTF8
> "phoebe at ephaone.org/Sisay"]
>       CUR = 24
>       LEN = 28
>
>
>
> So i guess that, if I add that i have been running the server since one
> year without problem, that the patch is sae enough to be pushed
> ( the one i posted on
> http://lists.danga.com/pipermail/djabberd/2007-September/000401.html )



More information about the Djabberd mailing list