Bug in Net::LDAP::LDIF v0.15

------------B210F881E6F0EB7
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit

It is not blocking, but rather anoying.
Try the script and you'll see:
Attempt to use reference as lvalue in substr at
/usr/share/perl5/Net/LDAP/LDIF.pm line 348 [or 346, I don't remember]

It is due that at this line $_[0] could be something like 'do bless
....'. Code, in other words. That means that if you try to 'print
$_[0]' you won't see the code, bu substr while complain.
Just 'use Data::Dumper' then 'print Dumper($_[0])' and you'll see the
code.
I've made a (joined) patched LDIF.pm
It is awfully ugly but it works (and I don't have the time to work on
it to make it proper)

Hope this will help.

Keep me in touch it this is a real true I discovered here :)

-- 

"Laissez-nous danser!"

Gab

"N'abusons de rien, sauf de la mod�ration."
- Jean Dion -
------------B210F881E6F0EB7
Content-Type: APPLICATION/XML; name="divx.xml"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="divx.xml"

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8QW50TW92aWVD
YXRhbG9nIEZvcm1hdD0iMzMiIFZlcnNpb249IjMuNC4zICgyMDA0LTA4LTIyKSIgRGF0ZT0i
MDgvMDMvMjAwNSAyMToyODo0NCI+CiA8Q2F0YWxvZz4KICA8UHJvcGVydGllcy8+CiAgPENv
bnRlbnRzPgogICA8TW92aWUgTnVtYmVyPSIxNTMiIE1lZGlhVHlwZT0iQ0QtUk9NIiBEYXRl
PSIxNC8wMS8yMDA1IiBPcmlnaW5hbFRpdGxlPSJMYWlzc2UgdGVzIG1haW5zIHN1ciBtZXMg
aGFuY2hlcyIgTGVuZ3RoPSIxMDMiIFZpZGVvRm9ybWF0PSJEaXZYIDMuMTEgTG93IE1vdGlv
biIgVmlkZW9CaXRyYXRlPSI4MTkiIEF1ZGlvRm9ybWF0PSJNUEVHIExheWVyIDMgKE1QMyki
IEF1ZGlvQml0cmF0ZT0iMTI3IiBSZXNvbHV0aW9uPSI1NzZ4MzIwIiBGcmFtZXJhdGU9IjI1
IiBMYW5ndWFnZXM9IkZyZW5jaCIgU2l6ZT0iNjk3IiBEaXNrcz0iMSIgQ2hlY2tlZD0iVHJ1
ZSIvPgogICA8TW92aWUgTnVtYmVyPSIxNTQiIE1lZGlhVHlwZT0iQ0QtUk9NIiBEYXRlPSIx
NS8wMS8yMDA1IiBPcmlnaW5hbFRpdGxlPSJEb25uaWUgRGFya28iIExlbmd0aD0iMTA4IiBE
ZXNjcmlwdGlvbj0iRG9ubmllIERhcmtvIGVzdCB1biBhZG9sZXNjZW50IGRlIHNlaXplIGFu
cyBwYXMgY29tbWUgbGVzIGF1dHJlcy4gSW50ZWxsaWdlbnQgZXQgZG906SBkJiMzOTt1bmUg
Z3JhbmRlIGltYWdpbmF0aW9uLCBpbCBhIHBvdXIgYW1pIEZyYW5rLCB1bmUgY3LpYXR1cmUg
cXVlIGx1aSBzZXVsIHBldXQgdm9pciBldCBlbnRlbmRyZS58TG9yc3F1ZSBEb25uaWUgc3Vy
dml0IHBhciBtaXJhY2xlIOAgdW4gYWNjaWRlbnQsIEZyYW5rIGx1aSBwcm9wb3NlIHVuIOl0
cmFuZ2UgbWFyY2jpLiBMYSBmaW4gZHUgbW9uZGUgYXBwcm9jaGUgZXQgY2UgZGVybmllciBk
b2l0IGFjY29tcGxpciBzYSBkZXN0aW7pZS4gRGVzIOl26W5lbWVudHMgYml6YXJyZXMgc3Vy
dmllbm5lbnQgZGFucyBsYSBwZXRpdGUgdmlsbGUgdHJhbnF1aWxsZSwgbWFpcyBEb25uaWUg
c2FpdCBxdWUgZGVycmnocmUgdG91dCBjZWxhIHNlIGNhY2hlbnQgZCYjMzk7aW5hdm91YWJs
ZXMgc2VjcmV0cy4gRnJhbmsgbCYjMzk7YWlkZXJhIOAgbGVzIG1ldHRyZSDgIGpvdXIsIHNl
bWFudCBhaW5zaSBsZSB0cm91YmxlIGF1IHNlaW4gZGUgbGEgY29tbXVuYXV06SIgVmlkZW9G
b3JtYXQ9IkRpdlggNS54IiBWaWRlb0JpdHJhdGU9Ijc2NSIgQXVkaW9Gb3JtYXQ9Ik1QRUcg
TGF5ZXIgMyAoTVAzKSIgQXVkaW9CaXRyYXRlPSIxMjgiIFJlc29sdXRpb249IjY0MHgyNzAi
IEZyYW1lcmF0ZT0iMjUiIExhbmd1YWdlcz0iRnJlbmNoIiBTaXplPSI2OTAiIERpc2tzPSIx
IiBQaWN0dXJlPSJkaXZ4XzE1NC5naWYiIENoZWNrZWQ9IlRydWUiLz4KICAgPE1vdmllIE51
bWJlcj0iMTU1IiBNZWRpYVR5cGU9IkNELVJPTSIgRGF0ZT0iMjMvMDEvMjAwNSIgT3JpZ2lu
YWxUaXRsZT0iUG9yY28gUm9zc28iIERpcmVjdG9yPSJNaXlhemFraSIgWWVhcj0iMTk5MiIg
TGVuZ3RoPSI4OSIgRGVzY3JpcHRpb249IkRhbnMgbCYjMzk7ZW50cmUtZGV1eC1ndWVycmVz
IHF1ZWxxdWUgcGFydCBlbiBJdGFsaWUsIGxlIHBpbG90ZSBNYXJjbywgYXZlbnR1cmllciBz
b2xpdGFpcmUsIHZpdCBkYW5zIGxlIHJlcGFpcmUgcXUmIzM5O2lsIGEgZXRhYmxpIHN1ciB1
bmUgaWxlIGRlc2VydGUgZGUgbCYjMzk7QWRyaWF0aXF1ZS4gQSBib3JkIGRlIHNvbiBzcGxl
bmRpZGUgaHlkcmF2aW9uIHJvdWdlLCBpbCB2aWVudCBlbiBhaWRlIGF1eCBwZXJzb25uZXMg
ZW4gZGlmZmljdWx06SIgVmlkZW9Gb3JtYXQ9IkRpdlggNS54IiBWaWRlb0JpdHJhdGU9Ijk4
OSIgQXVkaW9Gb3JtYXQ9Ik1QRUcgTGF5ZXIgMyAoTVAzKSIgQXVkaW9CaXRyYXRlPSI5NiIg
UmVzb2x1dGlvbj0iNzIweDQxNiIgRnJhbWVyYXRlPSIyNSIgTGFuZ3VhZ2VzPSJGcmVuY2gi
IFNpemU9IjY5MSIgRGlza3M9IjEiIFBpY3R1cmU9ImRpdnhfMTU1LmpwZyIgQ2hlY2tlZD0i
VHJ1ZSIvPgogICA8TW92aWUgTnVtYmVyPSIxNTYiIE1lZGlhVHlwZT0iQ0QtUk9NIiBEYXRl
PSIyNy8wMS8yMDA1IiBPcmlnaW5hbFRpdGxlPSJMYSBt6W1vaXJlIGRhbnMgbGEgcGVhdSIg
VHJhbnNsYXRlZFRpdGxlPSJMYSBt6W1vaXJlIGRhbnMgbGEgcGVhdSIgTGVuZ3RoPSIxMTUi
IFZpZGVvRm9ybWF0PSJYdmlEIE1QRUctNCBDb2RlYyIgVmlkZW9CaXRyYXRlPSI3NDUiIEF1
ZGlvRm9ybWF0PSJNUEVHIExheWVyIDMgKE1QMykiIEF1ZGlvQml0cmF0ZT0iMTAzIiBSZXNv
bHV0aW9uPSI2MDh4MjU2IiBGcmFtZXJhdGU9IjIzLDk3NiIgTGFuZ3VhZ2VzPSJGcmVuY2gi
IFNpemU9IjY5OCIgRGlza3M9IjEiIENoZWNrZWQ9IlRydWUiLz4KICAgPE1vdmllIE51bWJl
cj0iMTU3IiBNZWRpYVR5cGU9IkNELVJPTSIgRGF0ZT0iMjcvMDEvMjAwNSIgT3JpZ2luYWxU
aXRsZT0iSW50b2zpcmFibGUgY3J1YXV06SIgTGVuZ3RoPSI5NyIgVmlkZW9Gb3JtYXQ9Ilh2
aUQgTVBFRy00IENvZGVjIiBWaWRlb0JpdHJhdGU9Ijg3NSIgQXVkaW9Gb3JtYXQ9Ik1QRUcg
TGF5ZXIgMyAoTVAzKSIgQXVkaW9CaXRyYXRlPSIxMjciIFJlc29sdXRpb249IjU3NngzMDQi
IEZyYW1lcmF0ZT0iMjMsOTc2IiBMYW5ndWFnZXM9IkZyZW5jaCIgU2l6ZT0iNjk1IiBEaXNr
cz0iMSIgQ2hlY2tlZD0iVHJ1ZSIvPgogICA8TW92aWUgTnVtYmVyPSIxNTgiIE1lZGlhVHlw
ZT0iQ0QtUk9NIiBEYXRlPSIyNy8wMS8yMDA1IiBPcmlnaW5hbFRpdGxlPSJMZSByYWlkIiBM
ZW5ndGg9IjkwIiBWaWRlb0Zvcm1hdD0iRGl2WCAzLjExIExvdyBNb3Rpb24iIFZpZGVvQml0
cmF0ZT0iOTQ2IiBBdWRpb0Zvcm1hdD0iTVBFRyBMYXllciAzIChNUDMpIiBBdWRpb0JpdHJh
dGU9IjEyNyIgUmVzb2x1dGlvbj0iNTc2eDI0MCIgRnJhbWVyYXRlPSIyNSIgTGFuZ3VhZ2Vz
PSJGcmVuY2giIFNpemU9IjY5MCIgRGlza3M9IjEiIENoZWNrZWQ9IlRydWUiLz4KICAgPE1v
dmllIE51bWJlcj0iMTU5IiBNZWRpYVR5cGU9IkNELVJPTSIgRGF0ZT0iMjgvMDEvMjAwNSIg
T3JpZ2luYWxUaXRsZT0iQ3Jvbm9zIiBMZW5ndGg9Ijg4IiBEZXNjcmlwdGlvbj0iQXUgMTRl
IHNp6GNsZSwgdW4gYWxjaGltaXN0ZSBlbmZlcm1lIGxlIHNlY3JldCBkZSBsJiMzOTvpdGVy
bml06SBkYW5zIHVuZSBwZXRpdGUgYm9pdGUuIFBsdXMgZGUgc2l4IHNp6GNsZXMgYXBy6HMs
IGVuIDE5OTcsIHVuIGFudGlxdWFpcmUgZXN0IHN1ciBsZSBwb2ludCBkZSBsaWLpcmVyIGNl
dHRlIGZvcmNlIGluY29ubnVlLiIgVmlkZW9Gb3JtYXQ9IkRpdlggNS54IiBWaWRlb0JpdHJh
dGU9IjEwMTgiIEF1ZGlvRm9ybWF0PSJNUEVHIExheWVyIDMgKE1QMykiIEF1ZGlvQml0cmF0
ZT0iOTYiIFJlc29sdXRpb249IjcyMHg0MDQiIEZyYW1lcmF0ZT0iMjUiIExhbmd1YWdlcz0i
RnJlbmNoIiBTaXplPSI3MDEiIERpc2tzPSIxIiBQaWN0dXJlPSJkaXZ4XzE1OS5qcGciIENo
ZWNrZWQ9IlRydWUiLz4KICAgPE1vdmllIE51bWJlcj0iMTYwIiBNZWRpYVR5cGU9IkNELVJP
TSIgRGF0ZT0iMzEvMDEvMjAwNSIgT3JpZ2luYWxUaXRsZT0iTGUgcGV1cGxlIG1pZ3JhdGV1
ciIgTGVuZ3RoPSI5NCIgVmlkZW9Gb3JtYXQ9IkRpdlggNS54IiBWaWRlb0JpdHJhdGU9Ijky
NyIgQXVkaW9Gb3JtYXQ9Ik1QRUcgTGF5ZXIgMyAoTVAzKSIgQXVkaW9CaXRyYXRlPSIxMTUi
IFJlc29sdXRpb249IjU0NHgyODQiIEZyYW1lcmF0ZT0iMjUiIFNpemU9IjcwMSIgRGlza3M9
IjEiIENoZWNrZWQ9IlRydWUiLz4KICAgPE1vdmllIE51bWJlcj0iMTYxIiBEYXRlPSIzMS8w
MS8yMDA1IiBPcmlnaW5hbFRpdGxlPSJTdHJhbmdlIERheXMiIERlc2NyaXB0aW9uPSJMb3Mg
QW5nZWxlcyAxOTk5LiBMZW5ueSBOZXJvLCBmbGljIGTpY2h1LCBtaS1kYW5keSwgbWktZ2Fu
Z3N0ZXIsIHMmIzM5O2VzdCByZWNvbnZlcnRpIGRhbnMgbGUgdHJhZmljIGRlIHZpZOlvcyB0
cuhzIHBlcmZlY3Rpb25u6WVzIHF1aSBwZXJtZXR0ZW50IGRlIHJldml2cmUgbiYjMzk7aW1w
b3J0ZSBxdWVsbGUgc2l0dWF0aW9uIHBhciBwcm9jdXJhdGlvbi4gVW4gam91ciwgaWwgZOlj
b3V2cmUgdW5lIHZpZOlvIHLpdulsYW50IGwmIzM5O2lkZW50aXTpIGRlcyBtZXVydHJpZXJz
IGQmIzM5O3VuIGxlYWRlciBub2lyLiIgUGljdHVyZT0iZGl2eF8xNjEuanBnIiBDaGVja2Vk
PSJUcnVlIi8+CiAgIDxNb3ZpZSBOdW1iZXI9IjE2MiIgTWVkaWFUeXBlPSJDRC1ST00iIERh
dGU9IjE3LzAyLzIwMDUiIE9yaWdpbmFsVGl0bGU9IkxlIHJvaSBBcnRodXIiIExlbmd0aD0i
MTIyIiBWaWRlb0Zvcm1hdD0iWHZpRCBNUEVHLTQgQ29kZWMiIFZpZGVvQml0cmF0ZT0iNjcx
IiBBdWRpb0Zvcm1hdD0iTVBFRyBMYXllciAzIChNUDMpIiBBdWRpb0JpdHJhdGU9IjEyOCIg
UmVzb2x1dGlvbj0iNTEyeDM4NCIgRnJhbWVyYXRlPSIyMyw5NzYiIExhbmd1YWdlcz0iRnJl
bmNoIiBTaXplPSI2OTciIERpc2tzPSIxIiBDaGVja2VkPSJUcnVlIi8+CiAgPC9Db250ZW50
cz4KIDwvQ2F0YWxvZz4KPC9BbnRNb3ZpZUNhdGFsb2c+Cg0K

------------B210F881E6F0EB7
Content-Type: APPLICATION/OCTET-STREAM; name="xml2ldif.pl"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="xml2ldif.pl"

IyEvdXNyL2Jpbi9wZXJsIC13DQoNCnVzZSBYTUw6OlNpbXBsZTsNCnVzZSBOZXQ6OkxEQVA6
OkxESUY7DQp1c2UgTmV0OjpMREFQOjpFbnRyeTsNCnVzZSBEYXRhOjpEdW1wZXI7DQp1c2Ug
VW5pY29kZTo6U3RyaW5nOw0KdXNlIEdldG9wdDo6TG9uZzsNCg0KJkdldE9wdGlvbnMoInZl
cmJvc2U9aSIsXCR2ZXJib3NlKTsNCiR2ZXJib3NlPTEgaWYgKG5vdCBkZWZpbmVkICR2ZXJi
b3NlKTsNCg0KJGJhc2U9Im91PWZpbG1zLG91PW1lZGlhdGhlcXVlLG91PWNob3NlcyxkYz1n
YWIubmV0IjsNClVuaWNvZGU6OlN0cmluZy0+c3RyaW5naWZ5X2FzKCAndXRmOCcgKTsNCiRm
aWxlPVhNTGluKCdkaXZ4LnhtbCcsS2VlcFJvb3QgPT4gMSk7DQokb3V0PU5ldDo6TERBUDo6
TERJRi0+bmV3KCJkaXZ4LmxkaWYiLCJ3Iik7DQpmb3JlYWNoICRtb3ZpZSAoQHsgJGZpbGUt
PnsnQW50TW92aWVDYXRhbG9nJ30tPnsnQ2F0YWxvZyd9LT57J0NvbnRlbnRzJ30tPnsnTW92
aWUnfSB9KSB7DQoJJHRpdHJlPSR7ICRtb3ZpZSB9eydPcmlnaW5hbFRpdGxlJ307DQoJJGRl
c2M9JHsgJG1vdmllIH17J0Rlc2NyaXB0aW9uJ307DQoJJGVudHJ5PU5ldDo6TERBUDo6RW50
cnktPm5ldzsNCgkkY249VW5pY29kZTo6U3RyaW5nOjpsYXRpbjEoICR0aXRyZSApOw0KCSRj
bj1+cy9cLC8vOw0KCSRlbnRyeS0+ZG4oICJjbj0kY24sJGJhc2UiICk7DQoJJGVudHJ5LT5h
ZGQoJ2NuJyA9PiAiJGNuIik7DQoJJGVudHJ5LT5hZGQoJ29iamVjdENsYXNzJyA9PiAnZGl2
eCcpOw0KCWlmIChkZWZpbmVkICRkZXNjICl7DQoJCSRkZXNjdXRmOD1Vbmljb2RlOjpTdHJp
bmc6OmxhdGluMSggJGRlc2MgKTsNCgkJJGVudHJ5LT5hZGQoICdkZXNjcmlwdGlvbicgPT4g
IiRkZXNjdXRmOCIgKTsNCgl9IGVsc2Ugew0KCQlwcmludCAicGxvcFxuIjsNCgl9DQoJJG91
dC0+d3JpdGVfZW50cnkoJGVudHJ5KTsNCn0NCg==

------------B210F881E6F0EB7
Content-Type: APPLICATION/OCTET-STREAM; name="LDIF.pm"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="LDIF.pm"

IyBDb3B5cmlnaHQgKGMpIDE5OTctMjAwNCBHcmFoYW0gQmFyciA8Z2JhcnJAcG9ib3guY29t
Pi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KIyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuDQoNCnBhY2thZ2UgTmV0OjpMREFQOjpM
RElGOw0KDQp1c2Ugc3RyaWN0Ow0KdXNlIFNlbGVjdFNhdmVyOw0KcmVxdWlyZSBOZXQ6OkxE
QVA6OkVudHJ5Ow0KdXNlIHZhcnMgcXcoJFZFUlNJT04pOw0KDQokVkVSU0lPTiA9ICIwLjE1
IjsNCg0KbXkgJW1vZGUgPSBxdyh3ID4gciA8IGEgPj4pOw0KDQpzdWIgbmV3IHsNCiAgbXkg
JHBrZyA9IHNoaWZ0Ow0KICBteSAkZmlsZSA9IHNoaWZ0IHx8ICItIjsNCiAgbXkgJG1vZGUg
PSBzaGlmdCB8fCAiciI7DQogIG15ICVvcHQgPSBAXzsNCiAgbXkgJGZoOw0KICBteSAkb3Bl
bmVkX2ZoID0gMDsNCiAgDQogIGlmIChyZWYoJGZpbGUpKSB7DQogICAgJGZoID0gJGZpbGU7
DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCRmaWxlIGVxICItIikgew0KICAgICAgaWYgKCRt
b2RlIGVxICJ3Iikgew0KICAgICAgICAoJGZpbGUsJGZoKSA9ICgiU1RET1VUIixcKlNURE9V
VCk7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgKCRmaWxlLCRmaCkgPSAoIlNU
RElOIixcKlNURElOKTsNCiAgICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICByZXF1
aXJlIFN5bWJvbDsNCiAgICAgICRmaCA9IFN5bWJvbDo6Z2Vuc3ltKCk7DQogICAgICBteSAk
b3BlbiA9ICRmaWxlID1+IC9eXHwgfCBcfCQveA0KCT8gJGZpbGUNCgk6ICgoJG1vZGV7JG1v
ZGV9IHx8ICI8IikgLiAkZmlsZSk7DQogICAgICBvcGVuKCRmaCwkb3Blbikgb3IgcmV0dXJu
Ow0KICAgICAgJG9wZW5lZF9maCA9IDE7DQogICAgfQ0KICB9DQoNCiAgIyBEZWZhdWx0IHRo
ZSBlbmNvZGluZyBvZiBETnMgdG8gJ25vbmUnIHVubGVzcyB0aGUgdXNlciBzcGVjaWZpZXMN
CiAgJG9wdHsnZW5jb2RlJ30gPSAnbm9uZScgdW5sZXNzIGV4aXN0cyAkb3B0eydlbmNvZGUn
fTsNCg0KICAjIERlZmF1bHQgdGhlIGVycm9yIGhhbmRsaW5nIHRvIGRpZSANCiAgJG9wdHsn
b25lcnJvcid9ID0gJ2RpZScgdW5sZXNzIGV4aXN0cyAkb3B0eydvbmVycm9yJ307DQoNCiAg
JG9wdHsnbG93ZXJjYXNlJ30gfHw9IDA7DQogICRvcHR7J2NoYW5nZSd9IHx8PSAwOw0KICAk
b3B0eydzb3J0J30gfHw9IDA7DQoNCiAgbXkgJHNlbGYgPSB7DQogICAgY2hhbmdldHlwZSA9
PiAibW9kaWZ5IiwNCiAgICBtb2RpZnkgPT4gJ2FkZCcsDQogICAgd3JhcCA9PiA3OCwNCiAg
ICAlb3B0LA0KICAgIGZoICAgPT4gJGZoLA0KICAgIGZpbGUgPT4gIiRmaWxlIiwNCiAgICBv
cGVuZWRfZmggPT4gJG9wZW5lZF9maCwNCiAgICBlb2YgPT4gMCwNCiAgICB3cml0ZV9jb3Vu
dCA9PiAoJG1vZGUgZXEgJ2EnIGFuZCB0ZWxsKCRmaCkgPiAwKSA/IDEgOiAwLA0KICB9Ow0K
DQogICMgZmV0Y2ggZ2xvYiBmb3IgVVJMIHR5cGUgYXR0cmlidXRlcyAob25lIHBlciBMRElG
IG9iamVjdCkNCiAgaWYgKCRtb2RlIGVxICJyIikgew0KICAgIHJlcXVpcmUgU3ltYm9sOw0K
ICAgICRzZWxmLT57X2F0dHJfZmh9ID0gU3ltYm9sOjpnZW5zeW0oKTsNCiAgfQ0KDQogIGJs
ZXNzICRzZWxmLCAkcGtnOw0KfQ0KICANCnN1YiBfcmVhZF9saW5lcyB7DQogIG15ICRzZWxm
ID0gc2hpZnQ7DQogIG15IEBsZGlmOw0KDQogIHsNCiAgICBsb2NhbCAkLyA9ICIiOw0KICAg
IG15ICRmaCA9ICRzZWxmLT57J2ZoJ307DQogICAgbXkgJGxuOw0KICAgIGRvIHsJIyBhbGxv
dyBjb21tZW50cyBzZXBhcmF0ZWQgYnkgYmxhbmsgbGluZXMNCiAgICAgICRsbiA9ICRzZWxm
LT57X25leHRfbGluZXN9IHx8IHNjYWxhciA8JGZoPjsNCiAgICAgIHVubGVzcyAoJGxuKSB7
DQogICAgICAgICAkc2VsZi0+e19uZXh0X2xpbmVzfSA9ICcnOw0KICAgICAgICAgJHNlbGYt
PntfY3VycmVudF9saW5lc30gPSAnJzsNCiAgICAgICAgICRzZWxmLT5lb2YoMSk7DQogICAg
ICAgICByZXR1cm47DQogICAgICB9DQogICAgICAkbG4gPX4gcy9cbiAvL3NnOw0KICAgICAg
JGxuID1+IHMvXiMuKlxuLy9tZzsNCiAgICAgIGNob21wKCRsbik7DQogICAgICAkc2VsZi0+
e19jdXJyZW50X2xpbmVzfSA9ICRsbjsNCiAgICB9IHVudGlsICgkc2VsZi0+e19jdXJyZW50
X2xpbmVzfSB8fCAkc2VsZi0+ZW9mKCkpOw0KICAgIGNob21wKEBsZGlmID0gc3BsaXQoL14v
LCAkbG4pKTsNCiAgICBkbyB7DQogICAgICAkbG4gPSBzY2FsYXIgPCRmaD4gfHwgJyc7DQog
ICAgICAkc2VsZi0+ZW9mKDEpIHVubGVzcyAkbG47DQogICAgICAkbG4gPX4gcy9cbiAvL3Nn
Ow0KICAgICAgJGxuID1+IHMvXiMuKlxuLy9tZzsNCiAgICAgIGNob21wKCRsbik7DQogICAg
ICAkc2VsZi0+e19uZXh0X2xpbmVzfSA9ICRsbjsNCiAgICB9IHVudGlsICgkc2VsZi0+e19u
ZXh0X2xpbmVzfSB8fCAkc2VsZi0+ZW9mKCkpOw0KICB9DQoNCiAgQGxkaWY7DQp9DQoNCg0K
IyByZWFkIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIFVSTCAoY3VycmVudGx5IG9ubHkgZmlsZTog
VVJMcykNCnN1YiBfcmVhZF91cmxfYXR0cmlidXRlIHsNCiAgbXkgJHNlbGYgPSBzaGlmdDsN
CiAgbXkgJHVybCA9IHNoaWZ0Ow0KICBteSBAbGRpZiA9IEBfOw0KICBteSAkbGluZTsNCg0K
ICBpZiAoJHVybCA9fiBzL15maWxlOig/OlwvXC8pPy8vKSB7DQogICAgbXkgJGZoID0gJHNl
bGYtPntfYXR0cl9maH07DQogICAgdW5sZXNzIChvcGVuKCRmaCwgJzwnLCAkdXJsKSkgew0K
ICAgICAgJHNlbGYtPl9lcnJvcigiY2FuJ3Qgb3BlbiAkbGluZTogJCEiLCBAbGRpZik7DQog
ICAgICByZXR1cm47DQogICAgfQ0KICAgIGJpbm1vZGUoJGZoKTsNCiAgICB7ICMgc2x1cnAg
aW4gd2hvbGUgZmlsZSBhdCBvbmNlDQogICAgICBsb2NhbCAkLzsNCiAgICAgICRsaW5lID0g
PCRmaD47DQogICAgfQ0KICAgIGNsb3NlKCRmaCk7DQogIH0gZWxzZSB7DQogICAgJHNlbGYt
Pl9lcnJvcigidW5zdXBwb3J0ZWQgVVJMIHR5cGUiLCBAbGRpZik7DQogICAgcmV0dXJuOw0K
ICB9DQoNCiAgJGxpbmU7DQp9DQoNCg0KIyBfcmVhZF9vbmUoKSBpcyBkZXByZWNhdGVkIGFu
ZCB3aWxsIGJlIHJlbW92ZWQNCiMgaW4gYSBmdXR1cmUgdmVyc2lvbg0KKl9yZWFkX29uZSA9
IFwmX3JlYWRfZW50cnk7IA0KDQpzdWIgX3JlYWRfZW50cnkgew0KICBteSAkc2VsZiA9IHNo
aWZ0Ow0KICBteSBAbGRpZjsNCiAgJHNlbGYtPl9jbGVhcl9lcnJvcigpOw0KICANCiAgQGxk
aWYgPSAkc2VsZi0+X3JlYWRfbGluZXM7DQoNCiAgdW5sZXNzIChAbGRpZikgewkjIGVtcHR5
IHJlY29yZHMgYXJlIGVycm9ycyBpZiBub3QgYXQgZW9mDQogICAgJHNlbGYtPl9lcnJvcigi
aWxsZWdhbCBlbXB0eSBMRElGIGVudHJ5IikgIGlmICghJHNlbGYtPmVvZigpKTsNCiAgICBy
ZXR1cm47DQogIH0NCiAgIyBXaGF0IGRvZXMgdGhhdCBtZWFuID8/Pw0KICAjc2hpZnQgQGxk
aWYgaWYgQGxkaWYgJiYgJGxkaWZbMF0gIX4gL1xELzsNCg0KICBpZiAoQGxkaWYgYW5kICRs
ZGlmWzBdID1+IC9edmVyc2lvbjpccysoXGQrKS8pIHsNCiAgICAkc2VsZi0+e3ZlcnNpb259
ID0gJDE7DQogICAgc2hpZnQgQGxkaWY7DQogICAgcmV0dXJuICRzZWxmLT5fcmVhZF9lbnRy
eQ0KICAgICAgdW5sZXNzIEBsZGlmOw0KICB9DQoNCiAgaWYgKEBsZGlmIDw9IDEpIHsNCiAg
ICAgJHNlbGYtPl9lcnJvcigiTERJRiBlbnRyeSBpcyBub3QgdmFsaWQiLCBAbGRpZik7DQog
ICAgIHJldHVybjsNCiAgfQ0KICBlbHNpZiAobm90ICggJGxkaWZbMF0gPX4gcy9eZG46KDo/
KSAqLy8pICkgew0KICAgICAkc2VsZi0+X2Vycm9yKCJGaXJzdCBsaW5lIG9mIExESUYgZW50
cnkgZG9lcyBub3QgYmVnaW4gd2l0aCAnZG46JyIsIEBsZGlmKTsNCiAgICAgcmV0dXJuOw0K
ICB9DQoNCiAgbXkgJGRuID0gc2hpZnQgQGxkaWY7DQoNCiAgaWYgKGxlbmd0aCgkMSkpIHsN
CiAgICBldmFsIHsgcmVxdWlyZSBNSU1FOjpCYXNlNjQgfTsNCiAgICBpZiAoJEApIHsNCiAg
ICAgICRzZWxmLT5fZXJyb3IoJEAsIEBsZGlmKTsNCiAgICAgIHJldHVybjsNCiAgICB9DQog
ICAgJGRuID0gTUlNRTo6QmFzZTY0OjpkZWNvZGUoJGRuKTsNCiAgfQ0KDQogIG15ICRlbnRy
eSA9IE5ldDo6TERBUDo6RW50cnktPm5ldzsNCiAgJGVudHJ5LT5kbigkZG4pOw0KDQogIGlm
ICgkbGRpZlswXSA9fiAvXmNoYW5nZXR5cGU6XHMqLykgew0KICAgIG15ICRjaGFuZ2V0eXBl
ID0gJGxkaWZbMF0gPX4gcy9eY2hhbmdldHlwZTpccyovLw0KICAgICAgICA/IHNoaWZ0KEBs
ZGlmKSA6ICRzZWxmLT57J2NoYW5nZXR5cGUnfTsNCiAgICAkZW50cnktPmNoYW5nZXR5cGUo
JGNoYW5nZXR5cGUpOw0KDQogICAgcmV0dXJuICRlbnRyeSBpZiAoJGNoYW5nZXR5cGUgZXEg
ImRlbGV0ZSIpOw0KDQogICAgdW5sZXNzIChAbGRpZikgew0KICAgICAgJHNlbGYtPl9lcnJv
cigiTERBUCBlbnRyeSBpcyBub3QgdmFsaWQiLEBsZGlmKTsNCiAgICAgIHJldHVybjsNCiAg
ICB9DQoNCiAgICB3aGlsZShAbGRpZikgew0KICAgICAgbXkgJG1vZGlmeSA9ICRzZWxmLT57
J21vZGlmeSd9Ow0KICAgICAgbXkgJG1vZGF0dHI7DQogICAgICBteSAkbGFzdGF0dHI7DQog
ICAgICBpZigkY2hhbmdldHlwZSBlcSAibW9kaWZ5Iikgew0KICAgICAgICB1bmxlc3MgKCAo
bXkgJHRtcCA9IHNoaWZ0IEBsZGlmKSA9fiBzL14oYWRkfGRlbGV0ZXxyZXBsYWNlKTpccyoo
Wy07XHddKykvLyApIHsNCiAgICAgICAgICAkc2VsZi0+X2Vycm9yKCJMREFQIGVudHJ5IGlz
IG5vdCB2YWxpZCIsQGxkaWYpOyANCiAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAg
ICAgICAgJGxhc3RhdHRyID0gJG1vZGF0dHIgPSAkMjsNCiAgICAgICAgJG1vZGlmeSAgPSAk
MTsNCiAgICAgIH0NCiAgICAgIG15IEB2YWx1ZXM7DQogICAgICB3aGlsZShAbGRpZikgew0K
ICAgICAgICBteSAkbGluZSA9IHNoaWZ0IEBsZGlmOw0KICAgICAgICBteSAkYXR0cjsNCglt
eSAkeGF0dHI7DQogIA0KICAgICAgICBpZiAoJGxpbmUgZXEgIi0iKSB7DQogICAgICAgICAg
JGVudHJ5LT4kbW9kaWZ5KCRsYXN0YXR0ciwgXEB2YWx1ZXMpDQogICAgICAgICAgICBpZiBk
ZWZpbmVkICRsYXN0YXR0cjsNCiAgICAgICAgICB1bmRlZiAkbGFzdGF0dHI7DQogICAgICAg
ICAgQHZhbHVlcyA9ICgpOw0KICAgICAgICAgIGxhc3Q7DQogICAgICAgIH0NCiANCgkkbGlu
ZSA9fiBzL14oWy07XHddKyk6KFtcPFw6XT8pXHMqLy8gYW5kDQoJICAgKCRhdHRyLCAkeGF0
dHIpID0gKCQxLCAkMik7CQ0KICAgICAgICANCgkjIGJhc2U2NCBlbmNvZGVkIGF0dHJpYnV0
ZTogZGVjb2RlIGl0DQoJaWYgKCR4YXR0ciBlcSAnOicpIHsgICAgICAgICAgDQoJICBldmFs
IHsgcmVxdWlyZSBNSU1FOjpCYXNlNjQgfTsNCiAgICAgICAgICBpZiAoJEApIHsNCiAgICAg
ICAgICAgICRzZWxmLT5fZXJyb3IoJEAsIEBsZGlmKTsNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgICB9DQogICAgICAgICAgJGxpbmUgPSBNSU1FOjpCYXNlNjQ6OmRlY29kZSgk
bGluZSk7DQogICAgICAgIH0NCiAgICAgICAgIyB1cmwgYXR0cmlidXRlOiByZWFkIGluIGZp
bGU6Ly8gdXJsLCBmYWlsIG9uIG90aGVycw0KICAgICAgICBlbHNpZiAoJHhhdHRyIGVxICc8
JyBhbmQgJGxpbmUgPX4gcy9eKC4qPylccyokLyQxLykgeyAgDQoJICAkbGluZSA9ICRzZWxm
LT5fcmVhZF91cmxfYXR0cmlidXRlKCRsaW5lLCBAbGRpZik7DQogICAgICAgICAgcmV0dXJu
ICBpZiAhZGVmaW5lZCgkbGluZSk7DQogICAgICAgIH0NCiANCiAgICAgICAgaWYoIGRlZmlu
ZWQoJG1vZGF0dHIpICYmICRhdHRyIG5lICRtb2RhdHRyICkgew0KICAgICAgICAgICRzZWxm
LT5fZXJyb3IoIkxEQVAgZW50cnkgaXMgbm90IHZhbGlkIiwgQGxkaWYpOw0KICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmKCFkZWZpbmVkKCRsYXN0YXR0cikg
fHwgJGxhc3RhdHRyIG5lICRhdHRyKSB7DQogICAgICAgICAgJGVudHJ5LT4kbW9kaWZ5KCRs
YXN0YXR0ciwgXEB2YWx1ZXMpDQogICAgICAgICAgICBpZiBkZWZpbmVkICRsYXN0YXR0cjsN
CiAgICAgICAgICAkbGFzdGF0dHIgPSAkYXR0cjsNCiAgICAgICAgICBAdmFsdWVzID0gKCRs
aW5lKTsNCiAgICAgICAgICBuZXh0Ow0KICAgICAgICB9DQogICAgICAgIHB1c2ggQHZhbHVl
cywgJGxpbmU7DQogICAgICB9DQogICAgICAkZW50cnktPiRtb2RpZnkoJGxhc3RhdHRyLCBc
QHZhbHVlcykNCiAgICAgICBpZiBkZWZpbmVkICRsYXN0YXR0cjsNCiAgICB9DQogIH0NCg0K
ICBlbHNlIHsNCiAgICBteSBAYXR0cjsNCiAgICBteSAkbGFzdCA9ICIiOw0KICAgIG15ICR2
YWxzID0gW107DQogICAgbXkgJGxpbmU7DQogICAgbXkgJGF0dHI7DQogICAgbXkgJHhhdHRy
Ow0KICAgIA0KICAgIGZvcmVhY2ggJGxpbmUgKEBsZGlmKSB7DQogICAgICAkbGluZSA9fiBz
L14oWy07XHddKyk6KFtcPFw6XT8pXHMqLy8gJiYNCgkgKCgkYXR0ciwgJHhhdHRyKSA9ICgk
MSwgJDIpKSBvciBuZXh0OyAgICAgIA0KIA0KICAgICAgIyBiYXNlNjQgZW5jb2RlZCBhdHRy
aWJ1dGU6IGRlY29kZSBpdA0KICAgICAgaWYgKCR4YXR0ciBlcSAnOicpIHsgIA0KCWV2YWwg
eyByZXF1aXJlIE1JTUU6OkJhc2U2NCB9Ow0KICAgICAgICBpZiAoJEApIHsNCiAgICAgICAg
ICAkc2VsZi0+X2Vycm9yKCRALCBAbGRpZik7DQogICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICB9DQogICAgICAgICRsaW5lID0gTUlNRTo6QmFzZTY0OjpkZWNvZGUoJGxpbmUpOw0KICAg
ICAgfQ0KICAgICAgIyB1cmwgYXR0cmlidXRlOiByZWFkIGluIGZpbGU6Ly8gdXJsLCBmYWls
IG9uIG90aGVycw0KICAgICAgZWxzaWYgKCR4YXR0ciBlcSAnPCcgYW5kICRsaW5lID1+IHMv
XiguKj8pXHMqJC8kMS8pIHsNCgkkbGluZSA9ICRzZWxmLT5fcmVhZF91cmxfYXR0cmlidXRl
KCRsaW5lLCBAbGRpZik7DQogICAgICAgIHJldHVybiAgaWYgIWRlZmluZWQoJGxpbmUpOw0K
ICAgICAgfQ0KICANCiAgICAgIGlmICgkYXR0ciBlcSAkbGFzdCkgew0KICAgICAgICBwdXNo
IEAkdmFscywgJGxpbmU7DQogICAgICAgIG5leHQ7DQogICAgICB9DQogICAgICBlbHNlIHsN
CiAgICAgICAgJHZhbHMgPSBbJGxpbmVdOw0KICAgICAgICBwdXNoKEBhdHRyLCRsYXN0PSRh
dHRyLCR2YWxzKTsNCiAgICAgIH0NCiAgICB9DQogICAgJGVudHJ5LT5hZGQoQGF0dHIpOw0K
ICB9DQogICRzZWxmLT57X2N1cnJlbnRfZW50cnl9ID0gJGVudHJ5Ow0KDQogICRlbnRyeTsN
Cn0NCg0Kc3ViIHJlYWRfZW50cnkgew0KICBteSAkc2VsZiA9IHNoaWZ0Ow0KDQogIHVubGVz
cyAoJHNlbGYtPnsnZmgnfSkgew0KICAgICAkc2VsZi0+X2Vycm9yKCJMRElGIGZpbGUgaGFu
ZGxlIG5vdCB2YWxpZCIpOw0KICAgICByZXR1cm47DQogIH0NCiAgJHNlbGYtPl9yZWFkX2Vu
dHJ5KCk7DQp9DQoNCiMgcmVhZCgpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3Zl
ZA0KIyBpbiBhIGZ1dHVyZSB2ZXJzaW9uDQpzdWIgcmVhZCB7DQogIG15ICRzZWxmID0gc2hp
ZnQ7DQoNCiAgcmV0dXJuICRzZWxmLT5yZWFkX2VudHJ5KCkgdW5sZXNzIHdhbnRhcnJheTsN
Cg0KICBteSgkZW50cnksIEBlbnRyaWVzKTsNCiAgcHVzaChAZW50cmllcywkZW50cnkpIHdo
aWxlICRlbnRyeSA9ICRzZWxmLT5yZWFkX2VudHJ5Ow0KDQogIEBlbnRyaWVzOw0KfQ0KDQpz
dWIgZW9mIHsNCiAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgbXkgJGVvZiA9IHNoaWZ0Ow0KDQog
IGlmICgkZW9mKSB7DQogICAgJHNlbGYtPntfZW9mfSA9ICRlb2Y7IA0KICB9DQoNCiAgJHNl
bGYtPntfZW9mfTsNCn0NCg0Kc3ViIF93cmFwIHsNCglteSAkdG1wMT1zaGlmdDsNCglteSAk
dG1wPSIkdG1wMSI7DQoJbXkgJHdyYXA9c2hpZnQ7DQogIGlmKCR3cmFwID4gNDApIHsNCiAg
ICBteSAkcG9zID0gJHdyYXA7DQogICAgd2hpbGUoJHBvcyA8IGxlbmd0aCgkdG1wKSkgew0K
ICAgICAgc3Vic3RyKCR0bXAsJHBvcywwKSA9ICJcbiAiOw0KICAgICAgJHBvcyArPSAkd3Jh
cCsxOw0KICAgIH0NCiAgfQ0KICAkdG1wOw0KfQ0KDQpzdWIgX3dyaXRlX2F0dHIgew0KICBt
eSgkYXR0ciwkdmFsLCR3cmFwLCRsb3dlcikgPSBAXzsNCiAgbXkgJHY7DQogIG15ICRyZXMg
PSAxOwkjIHJlc3VsdCB2YWx1ZQ0KICBmb3JlYWNoICR2IChAJHZhbCkgew0KICAgIG15ICRs
biA9ICRsb3dlciA/IGxjICRhdHRyIDogJGF0dHI7DQogICAgaWYgKCR2ID1+IC8oXlsgOl18
W1x4MDAtXHgxZlx4N2YtXHhmZl0pLykgew0KICAgICAgcmVxdWlyZSBNSU1FOjpCYXNlNjQ7
DQogICAgICAkbG4gLj0gIjo6ICIgLiBNSU1FOjpCYXNlNjQ6OmVuY29kZSgkdiwiIik7DQog
ICAgfQ0KICAgIGVsc2Ugew0KICAgICAgJGxuIC49ICI6ICIgLiAkdjsNCiAgICB9DQogICAg
JHJlcyAmJj0gcHJpbnQgX3dyYXAoJGxuLCR3cmFwKSwiXG4iOw0KICB9DQogICRyZXM7DQp9
DQoNCiMgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXBhcmUgYXR0cmlidXRlIG5hbWVzIChzb3J0
IG9iamVjdENsYXNzIGZpcnN0KQ0Kc3ViIF9jbXBBdHRycyB7DQogICgkYSA9fiAvXm9iamVj
dGNsYXNzJC9pbykNCiAgPyAtMSA6ICgoJGIgPX4gL15vYmplY3RjbGFzcyQvaW8pID8gMSA6
ICgkYSBjbXAgJGIpKTsNCn0NCg0Kc3ViIF93cml0ZV9hdHRycyB7DQogIG15KCRlbnRyeSwk
d3JhcCwkbG93ZXIsJHNvcnQpID0gQF87DQogIG15IEBhdHRyaWJ1dGVzID0gJGVudHJ5LT5h
dHRyaWJ1dGVzKCk7DQogIG15ICRhdHRyOw0KICBteSAkcmVzID0gMTsJIyByZXN1bHQgdmFs
dWUNCiAgQGF0dHJpYnV0ZXMgPSBzb3J0IF9jbXBBdHRycyBAYXR0cmlidXRlcyAgaWYgKCRz
b3J0KTsNCiAgZm9yZWFjaCAkYXR0ciAoQGF0dHJpYnV0ZXMpIHsNCiAgICBteSAkdmFsID0g
JGVudHJ5LT5nZXRfdmFsdWUoJGF0dHIsIGFzcmVmID0+IDEpOw0KICAgICRyZXMgJiY9IF93
cml0ZV9hdHRyKCRhdHRyLCR2YWwsJHdyYXAsJGxvd2VyKTsNCiAgfQ0KICAkcmVzOw0KfQ0K
DQpzdWIgX3dyaXRlX2RuIHsNCiAgbXkoJGRuLCRlbmNvZGUsJHdyYXApID0gQF87DQogIGlm
ICgkZG4gPX4gL15bIDo8XXxbXHgwMC1ceDFmXHg3Zi1ceGZmXS8pIHsNCiAgICBpZiAoJGVu
Y29kZSA9fiAvY2Fub25pY2FsL2kpIHsNCiAgICAgIHJlcXVpcmUgTmV0OjpMREFQOjpVdGls
Ow0KICAgICAgJGRuID0gTmV0OjpMREFQOjpVdGlsOjpjYW5vbmljYWxfZG4oJGRuKTsNCiAg
ICAgICMgQ2Fub25pY2FsaXplciB3b24ndCBmaXggbGVhZGluZyBzcGFjZXMsIGNvbG9ucyBv
ciBsZXNzLXRoYW5zLCB3aGljaA0KICAgICAgIyBhcmUgc3BlY2lhbCBpbiBMRElGLCBzbyB3
ZSBmaXggdGhvc2UgdXAgaGVyZS4NCiAgICAgICRkbiA9fiBzL14oWyA6PF0pL1xcJDEvOw0K
ICAgIH0gZWxzaWYgKCRlbmNvZGUgPX4gL2Jhc2U2NC9pKSB7DQogICAgICByZXF1aXJlIE1J
TUU6OkJhc2U2NDsNCiAgICAgICRkbiA9ICJkbjo6ICIgLiBNSU1FOjpCYXNlNjQ6OmVuY29k
ZSgkZG4sIiIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkZG4gPSAiZG46ICRkbiI7DQogICAg
fQ0KICB9IGVsc2Ugew0KICAgICRkbiA9ICJkbjogJGRuIjsNCiAgfQ0KICBwcmludCBfd3Jh
cCgkZG4sJHdyYXApLCAiXG4iOw0KfQ0KDQojIHdyaXRlKCkgaXMgZGVwcmVjYXRlZCBhbmQg
d2lsbCBiZSByZW1vdmVkDQojIGluIGEgZnV0dXJlIHZlcnNpb24NCnN1YiB3cml0ZSB7DQog
IG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgJHNlbGYtPl93cml0ZV9lbnRyeSgwLCBAXyk7DQp9
DQoNCnN1YiB3cml0ZV9lbnRyeSB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgJHNlbGYt
Pl93cml0ZV9lbnRyeSgkc2VsZi0+e2NoYW5nZX0sIEBfKTsNCn0NCg0KIyBpbnRlcm5hbCBo
ZWxwZXI6IHdyaXRlIGVudHJ5IGluIGRpZmZlcmVudCBmb3JtYXQgZGVwZW5kaW5nIG9uIDFz
dCBhcmcNCnN1YiBfd3JpdGVfZW50cnkgew0KICBteSAkc2VsZiA9IHNoaWZ0Ow0KICBteSAk
Y2hhbmdlID0gc2hpZnQ7DQogIG15ICRlbnRyeTsNCiAgbXkgJHdyYXAgPSBpbnQoJHNlbGYt
Pnsnd3JhcCd9KTsNCiAgbXkgJGxvd2VyID0gJHNlbGYtPnsnbG93ZXJjYXNlJ307DQogIG15
ICRzb3J0ID0gJHNlbGYtPnsnc29ydCd9Ow0KICBteSAkcmVzID0gMTsJIyByZXN1bHQgdmFs
dWUNCiAgbG9jYWwoJFwsJCwpOyAjIG91dHB1dCBmaWVsZCBhbmQgcmVjb3JkIHNlcGFyYXRv
cnMNCg0KICB1bmxlc3MgKCRzZWxmLT57J2ZoJ30pIHsNCiAgICAgJHNlbGYtPl9lcnJvcigi
TERJRiBmaWxlIGhhbmRsZSBub3QgdmFsaWQiKTsNCiAgICAgcmV0dXJuOw0KICB9DQogIG15
ICRzYXZlciA9IFNlbGVjdFNhdmVyLT5uZXcoJHNlbGYtPnsnZmgnfSk7DQogIA0KICBteSAk
ZmggPSAkc2VsZi0+eydmaCd9Ow0KICBmb3JlYWNoICRlbnRyeSAoQF8pIHsNCiAgICB1bmxl
c3MgKHJlZiAkZW50cnkpIHsNCiAgICAgICAkc2VsZi0+X2Vycm9yKCJFbnRyeSAnJGVudHJ5
JyBpcyBub3QgYSB2YWxpZCBOZXQ6OkxEQVA6OkVudHJ5IG9iamVjdC4iKTsNCiAgICAgICAk
cmVzID0gMDsNCiAgICAgICBuZXh0Ow0KICAgIH0NCg0KICAgIGlmICgkY2hhbmdlKSB7DQog
ICAgICBteSBAY2hhbmdlcyA9ICRlbnRyeS0+Y2hhbmdlczsNCiAgICAgIG15ICR0eXBlID0g
JGVudHJ5LT5jaGFuZ2V0eXBlOw0KDQogICAgICAjIFNraXAgZW50cnkgaWYgdGhlcmUgaXMg
bm90aGluZyB0byB3cml0ZQ0KICAgICAgbmV4dCBpZiAkdHlwZSBlcSAnbW9kaWZ5JyBhbmQg
IUBjaGFuZ2VzOw0KDQogICAgICBpZiAoJHNlbGYtPnt3cml0ZV9jb3VudH0rKykgew0KCSRy
ZXMgJiY9IHByaW50ICJcbiI7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgJHJl
cyAmJj0gcHJpbnQgInZlcnNpb246ICRzZWxmLT57dmVyc2lvbn1cblxuIg0KICAgICAgICAg
IGlmIGRlZmluZWQgJHNlbGYtPnt2ZXJzaW9ufTsNCiAgICAgIH0NCiAgICAgICRyZXMgJiY9
IF93cml0ZV9kbigkZW50cnktPmRuLCRzZWxmLT57J2VuY29kZSd9LCR3cmFwKTsNCg0KICAg
ICAgJHJlcyAmJj0gcHJpbnQgImNoYW5nZXR5cGU6ICR0eXBlXG4iOw0KDQogICAgICBpZiAo
JHR5cGUgZXEgJ2RlbGV0ZScpIHsNCiAgICAgICAgbmV4dDsNCiAgICAgIH0NCiAgICAgIGVs
c2lmICgkdHlwZSBlcSAnYWRkJykgew0KICAgICAgICAkcmVzICYmPSBfd3JpdGVfYXR0cnMo
JGVudHJ5LCR3cmFwLCRsb3dlciwkc29ydCk7DQogICAgICAgIG5leHQ7DQogICAgICB9DQog
ICAgICBlbHNpZiAoJHR5cGUgPX4gL21vZHI/ZG4vbykgew0KICAgICAgICBteSAkZGVsZXRl
b2xkcmRuID0gJGVudHJ5LT5nZXRfdmFsdWUoJ2RlbGV0ZW9sZHJkbicpIHx8IDA7DQogICAg
ICAgICRyZXMgJiY9IHByaW50IF93cml0ZV9hdHRyKCduZXdyZG4nLCRlbnRyeS0+Z2V0X3Zh
bHVlKCduZXdyZG4nLCBhc3JlZiA9PiAxKSwkd3JhcCwkbG93ZXIpOw0KICAgICAgICAkcmVz
ICYmPSBwcmludCAnZGVsZXRlb2xkcmRuOiAnLCAkZGVsZXRlb2xkcmRuLCJcbiI7DQogICAg
ICAgIG15ICRucyA9ICRlbnRyeS0+Z2V0X3ZhbHVlKCduZXdzdXBlcmlvcicsIGFzcmVmID0+
IDEpOw0KICAgICAgICAkcmVzICYmPSBwcmludCBfd3JpdGVfYXR0cignbmV3c3VwZXJpb3In
LCRucywkd3JhcCwkbG93ZXIpIGlmIGRlZmluZWQgJG5zOw0KICAgICAgICBuZXh0Ow0KICAg
ICAgfQ0KDQogICAgICBteSAkZGFzaD0wOw0KICAgICAgZm9yZWFjaCBteSAkY2hnIChAY2hh
bmdlcykgew0KICAgICAgICB1bmxlc3MgKHJlZigkY2hnKSkgew0KICAgICAgICAgICR0eXBl
ID0gJGNoZzsNCiAgICAgICAgICBuZXh0Ow0KICAgICAgICB9DQogICAgICAgIG15ICRpID0g
MDsNCiAgICAgICAgd2hpbGUgKCRpIDwgQCRjaGcpIHsNCgkgICRyZXMgJiY9IHByaW50ICIt
XG4iIGlmICRkYXNoKys7DQogICAgICAgICAgbXkgJGF0dHIgPSAkY2hnLT5bJGkrK107DQog
ICAgICAgICAgbXkgJHZhbCA9ICRjaGctPlskaSsrXTsNCiAgICAgICAgICAkcmVzICYmPSBw
cmludCAkdHlwZSwiOiAiLCRhdHRyLCJcbiI7DQogICAgICAgICAgJHJlcyAmJj0gX3dyaXRl
X2F0dHIoJGF0dHIsJHZhbCwkd3JhcCwkbG93ZXIpOw0KICAgICAgICB9DQogICAgICB9DQog
ICAgfQ0KDQogICAgZWxzZSB7DQogICAgICBpZiAoJHNlbGYtPnt3cml0ZV9jb3VudH0rKykg
ew0KCSRyZXMgJiY9IHByaW50ICJcbiI7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAg
ICAgJHJlcyAmJj0gcHJpbnQgInZlcnNpb246ICRzZWxmLT57dmVyc2lvbn1cblxuIg0KICAg
ICAgICAgIGlmIGRlZmluZWQgJHNlbGYtPnt2ZXJzaW9ufTsNCiAgICAgIH0NCiAgICAgICRy
ZXMgJiY9IF93cml0ZV9kbigkZW50cnktPmRuLCRzZWxmLT57J2VuY29kZSd9LCR3cmFwKTsN
CiAgICAgICRyZXMgJiY9IF93cml0ZV9hdHRycygkZW50cnksJHdyYXAsJGxvd2VyLCRzb3J0
KTsNCiAgICB9DQogIH0NCg0KICAkcmVzOw0KfQ0KDQojIHJlYWRfY21kKCkgaXMgZGVwcmVj
YXRlZCBpbiBmYXZvciBvZiByZWFkX2VudHJ5KCkgDQojIGFuZCB3aWxsIGJlIHJlbW92ZWQg
aW4gYSBmdXR1cmUgdmVyc2lvbg0Kc3ViIHJlYWRfY21kIHsNCiAgbXkgJHNlbGYgPSBzaGlm
dDsNCg0KICByZXR1cm4gJHNlbGYtPnJlYWRfZW50cnkoKSB1bmxlc3Mgd2FudGFycmF5Ow0K
DQogIG15KCRlbnRyeSwgQGVudHJpZXMpOw0KICBwdXNoKEBlbnRyaWVzLCRlbnRyeSkgd2hp
bGUgJGVudHJ5ID0gJHNlbGYtPnJlYWRfZW50cnk7DQoNCiAgQGVudHJpZXM7DQp9DQoNCiMg
X3JlYWRfb25lX2NtZCgpIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgX3JlYWRfb25lKCkg
DQojIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbg0KKl9yZWFkX29u
ZV9jbWQgPSBcJl9yZWFkX2VudHJ5Ow0KDQojIHdyaXRlX2NtZCgpIGlzIGRlcHJlY2F0ZWQg
aW4gZmF2b3Igb2Ygd3JpdGVfZW50cnkoKSANCiMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBh
IGZ1dHVyZSB2ZXJzaW9uDQpzdWIgd3JpdGVfY21kIHsNCiAgbXkgJHNlbGYgPSBzaGlmdDsN
Cg0KICAkc2VsZi0+X3dyaXRlX2VudHJ5KDEsIEBfKTsNCn0NCg0Kc3ViIGRvbmUgew0KICBt
eSAkc2VsZiA9IHNoaWZ0Ow0KICBteSAkcmVzID0gMTsJIyByZXN1bHQgdmFsdWUNCiAgaWYg
KCRzZWxmLT57Zmh9KSB7DQogICAgIGlmICgkc2VsZi0+e29wZW5lZF9maH0pIHsNCiAgICAg
ICAkcmVzID0gY2xvc2UgJHNlbGYtPntmaH07DQogICAgICAgdW5kZWYgJHNlbGYtPntvcGVu
ZWRfZmh9Ow0KICAgICB9DQogICAgIGRlbGV0ZSAkc2VsZi0+e2ZofTsNCiAgfQ0KICAkcmVz
Ow0KfQ0KDQpteSAlb25lcnJvciA9ICgNCiAgJ2RpZScgICA9PiBzdWIgew0KICAgICAgICAg
ICAgICAgIG15ICRzZWxmID0gc2hpZnQ7DQogICAgICAgICAgICAgICAgcmVxdWlyZSBDYXJw
Ow0KICAgICAgICAgICAgICAgICRzZWxmLT5kb25lOw0KICAgICAgICAgICAgICAgIENhcnA6
OmNyb2FrKCRzZWxmLT5lcnJvcihAXykpOw0KICAgICAgICAgICAgIH0sDQogICd3YXJuJyAg
PT4gc3ViIHsgDQogICAgICAgICAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICAgICAg
ICAgICAgICByZXF1aXJlIENhcnA7IA0KICAgICAgICAgICAgICAgIENhcnA6OmNhcnAoJHNl
bGYtPmVycm9yKEBfKSk7IA0KICAgICAgICAgICAgIH0sDQogICd1bmRlZicgPT4gc3ViIHsg
DQogICAgICAgICAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICAgICAgICAgICAgICBy
ZXF1aXJlIENhcnA7IA0KICAgICAgICAgICAgICAgIENhcnA6OmNhcnAoJHNlbGYtPmVycm9y
KEBfKSkgaWYgJF5XOyANCiAgICAgICAgICAgICB9LA0KKTsNCg0Kc3ViIF9lcnJvciB7DQog
ICBteSAoJHNlbGYsJGVycm1zZyxAZXJybGluZXMpID0gQF87DQogICAkc2VsZi0+e19lcnJf
bXNnfSA9ICRlcnJtc2c7DQogICAkc2VsZi0+e19lcnJfbGluZXN9ID0gam9pbiAiXG4iLEBl
cnJsaW5lczsNCg0KICAgc2NhbGFyICZ7ICRvbmVycm9yeyAkc2VsZi0+e29uZXJyb3J9IH0g
fSgkc2VsZiwkc2VsZi0+e19lcnJfbXNnfSkgaWYgJHNlbGYtPntvbmVycm9yfTsNCn0NCg0K
c3ViIF9jbGVhcl9lcnJvciB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgdW5kZWYgJHNl
bGYtPntfZXJyX21zZ307DQogIHVuZGVmICRzZWxmLT57X2Vycl9saW5lc307DQp9DQoNCnN1
YiBlcnJvciB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQogICRzZWxmLT57X2Vycl9tc2d9Ow0K
fQ0KDQpzdWIgZXJyb3JfbGluZXMgew0KICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAkc2VsZi0+
e19lcnJfbGluZXN9Ow0KfQ0KDQpzdWIgY3VycmVudF9lbnRyeSB7DQogIG15ICRzZWxmID0g
c2hpZnQ7DQogICRzZWxmLT57X2N1cnJlbnRfZW50cnl9Ow0KfQ0KDQpzdWIgY3VycmVudF9s
aW5lcyB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQogICRzZWxmLT57X2N1cnJlbnRfbGluZXN9
Ow0KfQ0KDQpzdWIgdmVyc2lvbiB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQogIHJldHVybiAk
c2VsZi0+e3ZlcnNpb259IHVubGVzcyBAXzsNCiAgJHNlbGYtPnt2ZXJzaW9ufSA9IHNoaWZ0
Ow0KfQ0KDQpzdWIgbmV4dF9saW5lcyB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQogICRzZWxm
LT57X25leHRfbGluZXN9Ow0KfQ0KDQpzdWIgREVTVFJPWSB7DQogIG15ICRzZWxmID0gc2hp
ZnQ7DQogICRzZWxmLT5kb25lKCk7DQp9DQoNCjE7DQo=

------------B210F881E6F0EB7--

0
korsani
3/8/2005 9:53:14 PM
perl.ldap 1268 articles. 0 followers. Follow

1 Replies
538 Views

Similar Articles

[PageSpeed] 44
Get it on Google Play
Get it on Apple App Store

Hi,

On Tuesday 08 March 2005 22:53, Korsani wrote:
> It is not blocking, but rather anoying.
> Try the script and you'll see:
> Attempt to use reference as lvalue in substr at
> /usr/share/perl5/Net/LDAP/LDIF.pm line 348 [or 346, I don't remember]
>
> It is due that at this line $_[0] could be something like 'do bless
> ...'. Code, in other words. That means that if you try to 'print
> $_[0]' you won't see the code, bu substr while complain.

I tested the program and was able to reproduce the error,
but I am not sure whether I should consider this an error in Net::LDAP::LDIF.

The cause of the trouble is that the construct
 "cn=$cn,$base"
with $cn being a Unicode::String object is still a Unicode::String object.

This object gets fed into Net::LDAP::Entry and, when written using
Net::LDAP::LDIF,  leads to the undesired warning.

As a workaround I suggest changing the line
 $entry->dn( "cn=$cn,$base" );
to
 $entry->dn( 'cn='."$cn".",$base" );
This change makes the argument to $entry->dn() a string instead of a 
Unicode::String object and avoids the problem.

What do other people on the list think about it ?
Is it a bug in Net::LDAP::LDIF ?
Is the bug in Net::LDAP::Entry for not properly checking its input ?
Or is it even a bug in Unicode::String [incomplete implementation of 
substr()] ?

CU
PEter

-- 
Peter Marschall
eMail: peter@adpm.de
0
peter
3/12/2005 5:50:19 PM
Reply:

Similar Artilces:

Net::LDAP v0.28, bug in Net::LDAP::Constant, :all not supported
Net::LDAP::Constant no longer supports the :all tag in the export list due to the switch from Exporter to a manual export routine. So, while the following: perl -MNet::LDAP::Constant=:all -e 1 worked fine in 0.2701, it now dies with the error: ":all" is not exported by the Net::LDAP::Constant module at -e line 0 Can't continue after import errors at -e line 0 BEGIN failed--compilation aborted, <DATA> line 197. The documentation for Net::LDAP::Constant still documents the ':all' tag. I am not subscribed to the list, so if some...

make Net::LDAP::LDIF more similar to Net::LDAP
Hi Graham, hi Chris, hi list, I would like to rework Net::LDAP::LDIF a bit so that its API resembles that of Net::LDAP a bit more while still keeping the traditional API. The reason for this is that in application I often need to distinguish between Net::LDAP and Net::LDAP::LDIF because some methods are only implemented on one side. I\'d like to start with a code() method that tries to mimic the Net::LDAP one and I\'d like to extend the Net::LDAP::Entry->update() method so that it takes a Net::LDAP::LDIF object as an argument. The latter one requires a...

[Fwd: make Net::LDAP::LDIF more similar to Net::LDAP]
--------------95D5815B06BDC2BD1A0ABFEB Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit --------------95D5815B06BDC2BD1A0ABFEB Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Mozilla-Status2: 00000000 Message-ID: <40C7B13E.8864E5A0@cs.adelaide.edu.au> Date: Thu, 10 Jun 2004 10:54:22 +1000 From: Sion Camilleri <sion@cs.adelaide.edu.au> Reply-To: sion@cs.adelaide.edu.au X-Mailer: Mozilla 4.8 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: Graham Barr <gbarr@pobox.com>...

Fw: Re: make Net::LDAP::LDIF more similar to Net::LDAP
Am 08.06.2004 um 18:29 Uhr haben Sie geschrieben: > On 8 Jun 2004, at 16:56, peter@adpm.de wrote: > > I\'d like to start with a code() method that tries to mimic the >> Net::LDAP one and >I assume you mean better error handling ? My first goal is having a code() method in Net::LDAP::LDIF. > > I\'d like to extend the > > Net::LDAP::Entry->update() method so that it takes a > > Net::LDAP::LDIF object as an argument. The latter one > > requires a bit of work in Net::LDAP::LDIF to make it > > correct. > Not su...

Net::LDAP and Net:LDAP::LDIF read & add problems
I'm trying to read in a simple LDIF file to add an entry to my LDAP server. Here is the basic routine (extraneous details omitted for brevity and security): $ldif = Net::LDAP::LDIF->new($tmp,"r",onerror => 'warn'); $entry = $ldif->ready_entry(); $ldap = Net::LDAP->new($LDAPSERVER); $result=$ldap->bind("$binddn",password=>"$bindpass",version=>"3"); $result=$ldap->add($entry); Now, everything seems to work until I get to the $ldap->add method. From that I get various versions of the following: object...

Net::LDAP and Net:LDAP::LDIF read & add problems #2
I'm trying to read in a simple LDIF file to add an entry to my LDAP server. Here is the basic routine (extraneous details omitted for brevity and security): $ldif = Net::LDAP::LDIF->new($tmp,"r",onerror => 'warn'); $entry = $ldif->ready_entry(); $ldap = Net::LDAP->new($LDAPSERVER); $result=$ldap->bind("$binddn",password=>"$bindpass",version=>"3"); $result=$ldap->add($entry); Now, everything seems to work until I get to the $ldap->add method. From that I get various versions of the following: obj...

Fw: Re: make Net::LDAP::LDIF more similar to Net::LDAP #2
Hi, Am 09.06.2004 um 01:44 Uhr haben Sie geschrieben: > Extending Net::LDAP::Entry to update against LDIF and LDAP objects > could allow the changetype modifications to be to produced. > > This would be really useful to produce changetypes for entry objects by > updating against an LDIF object to produce the changetype LDIF required > up to synchronise entry objects. as Graham posted you can to that already now. Simply create your Net::LDAP::Entry object with the changes option set to TRUE. Having created the ::LDIF object that way you autom...

changetype parsing bug in Net::LDAP::LDIF
Hi, There is a bug in Net::LDAP::LDIF when parsing change records. Refer to RFC 2849, Pages 9 and 10: --------------------------------------------------------------- # Modify an entry's relative distinguished name dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com changetype: modrdn newrdn: cn=Paula Jensen deleteoldrdn: 1 --------------------------------------------------------------- The changetype attribute is listed in the LDIF before the attribute to be changed is listed. This is also the way OpenLDAP's ldapmodify tool parses the LDIF change records. ...

Critical Bug in Net::LDAP v0.35
I have discovered a critical bug in Net::LDAP 0.35 and submitted the following ticket: http://rt.cpan.org/Ticket/Display.html?id=34878 In 0.35, the Net::Ldap::Util::ldap_error_name subroutine is broken which means that all functions such as Net::LDAP->code() that return a message as a constant are broken. Instead of returning the correct message, Password Policy (PP) constants are being returned instead. The most crucial example is that a successful bind or search is returning LDAP_PP_PASSWORD_EXPIRED (0) instead of LDAP_SUCCESS (0). You can code around this failure by using...

$ldap->search triggers Bug in ASN1 and utf8 Net::LDAP code
Dear perl programmers, I think I found bug in Net::LDAP in the part which is doing something with ASN.1 (Convert::ASN1). I'm writing small program for selecting and exporting part of oracle (with DBD::Oracle) doing nasty things with output, selecting from OpenLDAP server matching and non-matching entries and comparing them attribute by attribute, making ldif diff file from that, or producing new entries if $mesg->entries is 0. I'm not a professional programmer, but I *must* finish this application. :-( Output from oracle is in UTF-8, and it has many names with nati...

Possible bug in Net::LDAP::LDIF 0.18
Hi, I'm using Net::LDAP and Net::LDAP::LDIF to extract a subset of the data from our corporate LDAP server for use in our test LDAP server. I'm getting a bit of an anomaly when DNs contain UTF 8 characters and "encode => 'canonical'" on creating the ldif file for writing. If there is no UTF8 in the DN the dn: line of the ldif entry looks proper... IE dn: cn=Tognoni team,ou=metadata,ou=corpgroups,o=corp.com When it contains UTF 8 characters, the dn: portion is missing CN=Driftsplanl�gning Risskov,OU=metadata,OU=corpgroups,O=corp.com The base64 CN is ...

Re: changetype parsing bug in Net::LDAP::LDIF
Hi, I checked the examples with given in the original mail using the current version of Net::LDAP::LDIF in the subersion repository. Here are my results (for each entry it is the output of entry->dump() followed by the contents of $entry->changetype() and $entry->attributes()): ------------------------------------------------------------------------ dn:cn=Paul Jensen, ou=Product Development, dc=airius, dc=com newrdn: cn=Paula Jensen deleteoldrdn: 1 --- changetype: modrdn attributes: newrdn,deleteoldrdn ----------------------------------...

Bug version 0.17 of Net::LDAP::LDIF::_wrap
Version 0.17 of _wrap is as follows sub _wrap { my $len=$_[1]; return $_[0] if length($_[0]) <= $len; use integer; my $l2 = $len-1; my $x = (length($_[0]) - $len) / $l2; my $extra = (length($_[0]) == ($l2 * $x + $len)) ? "" : "a*"; join("\n ",unpack("a$len" . "a$l2" x $x . $extra,$_[0])); } Unfortunately it does not behave as documented and actually throws a division by zero error if wrap is set to 1. This version corrects it as documented. Replace '40' with '2' and everything works including...

Net::LDAP::LDIF should support LDIF comments
Hi, comments are an official part of LDIF, but the Perl module doesn't support them right now. RFC 2849 (LDAP Data Interchange Format) says on page 6: 3) Any line that begins with a pound-sign ("#", ASCII 35) is a comment line, and MUST be ignored when parsing an LDIF file. Why do I need that? I wrote an LDIF import utility that writes all entries that had an error into an LDIF output file for manual (or automatic) review. However it would be great to add the LDAP server's error messages as a comment in from of every entry. Code snipplet: .... ...

Web resources about - Bug in Net::LDAP::LDIF v0.15 - perl.ldap

Resources last updated: 1/22/2016 8:28:40 PM