[patch] unicode problem with DJabberd::RosterStorage::SQLite
Michael Scherer
misc at mandriva.org
Fri Sep 26 12:25:49 UTC 2008
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 )
--
Michael Scherer
More information about the Djabberd
mailing list