<<< Date Index >>>     <<< Thread Index >>>

mutt/2144: Please always use ascii_strcasecmp to compare ASCII parameter strings



>Number:         2144
>Notify-List:    
>Category:       mutt
>Synopsis:       Please always use ascii_strcasecmp to compare ASCII parameter 
>strings
>Confidential:   no
>Severity:       normal
>Priority:       medium
>Responsible:    mutt-dev
>State:          open
>Keywords:       
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 01 20:47:37 +0100 2005
>Originator:     Recai Oktas <roktas@xxxxxxxxxx>
>Release:        
>Organization:
>Environment:
Debian GNU/Linux (unstable)
>Description:
The latest Mutt package (version 1.5.11) doesn't work under the Turkish locales 
(tr_TR, tr_TR.UTF-8).  Tracking down the bug, I've found that the changes 
introduced in the "attachment counting for index display" patch have caused the 
problem.  This is a well-known bug pattern occured for Turkish locales.  Thomas 
Roessler has already warned the developers for the problem (which is exactly 
the case for this particular bug).  Excerpt from the Changelog:

2002/03/26 22:25:48  Thomas Roessler <roessler@xxxxxxxxxxxxxxxxxx>

    [...]

    * smime.c: Please use ascii_strcasecmp() if you want to compare ASCII 
parameter strings.  mutt_strcasecmp() depends on the locale, and detects "i" 
and "I" as _different_ in Turkish locales.
>How-To-Repeat:
Setup the locale as tr_TR (or tr_TR.UTF-8) and invoke Mutt with a configuration 
file which has an 'attachments' setting, i.e. "attachments +I text/plain".  
This will generate a parse  error.
>Fix:
Attached is a trivial patch which introduces two new functions: 
mutt_ascii_strcasecmp and mutt_ascii_strncasecmp , and applies the 
's/mutt_strcasecmp/mutt_ascii_strcasecmp'  and 
's/mutt_strncasecmp/mutt_ascii_strncasecmp' substitutions for all _obvious_ 
cases.  That is, the patch does not only deal with this reported bug, it also 
covers the other obvious cases.

P.S. Unfortunately, I couldn't test the patch, but I'll test and inform you 
later.
>Add-To-Audit-Trail:

>Unformatted:
 ----gnatsweb-attachment----
 Content-Type: text/x-patch; name="mutt_ascii_strcase.patch"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="mutt_ascii_strcase.patch"
 
 ZGlmZiAtcnUgbXV0dC5vcmlnL2NvbG9yLmMgbXV0dC9jb2xvci5jCi0tLSBtdXR0Lm9yaWcvY29s
 b3IuYwkyMDA1LTA5LTE3IDIzOjQ2OjEwLjAwMDAwMDAwMCArMDMwMAorKysgbXV0dC9jb2xvci5j
 CTIwMDUtMTItMDEgMjE6MDY6MDIuMDAwMDAwMDAwICswMjAwCkBAIC0zMDksMTQgKzMwOSwxNCBA
 QAogewogICBjaGFyICplcHRyOwogCi0gIGlmIChtdXR0X3N0cm5jYXNlY21wIChzLCAiYnJpZ2h0
 IiwgNikgPT0gMCkKKyAgaWYgKG11dHRfYXNjaWlfc3RybmNhc2VjbXAgKHMsICJicmlnaHQiLCA2
 KSA9PSAwKQogICB7CiAgICAgKmF0dHIgfD0gYnJpdGU7CiAgICAgcyArPSA2OwogICB9CiAKICAg
 LyogYWxsb3cgYWxpYXNlcyBmb3IgeHRlcm0gY29sb3IgcmVzb3VyY2VzICovCi0gIGlmIChtdXR0
 X3N0cm5jYXNlY21wIChzLCAiY29sb3IiLCA1KSA9PSAwKQorICBpZiAobXV0dF9hc2NpaV9zdHJu
 Y2FzZWNtcCAocywgImNvbG9yIiwgNSkgPT0gMCkKICAgewogICAgIHMgKz0gNTsKICAgICAqY29s
 ID0gc3RydG9sIChzLCAmZXB0ciwgMTApOwpkaWZmIC1ydSBtdXR0Lm9yaWcvY3J5cHQuYyBtdXR0
 L2NyeXB0LmMKLS0tIG11dHQub3JpZy9jcnlwdC5jCTIwMDUtMTAtMjEgMDc6MzU6MzcuMDAwMDAw
 MDAwICswMzAwCisrKyBtdXR0L2NyeXB0LmMJMjAwNS0xMi0wMSAyMTowNzoxOS4wMDAwMDAwMDAg
 KzAyMDAKQEAgLTU1Miw3ICs1NTIsNyBAQAogCWNvbnZlcnRfdG9fN2JpdCAoYS0+cGFydHMpOwog
 ICAgIH0gCiAgICAgZWxzZSBpZiAoYS0+dHlwZSA9PSBUWVBFTUVTU0FHRSAmJgotCSAgICAgbXV0
 dF9zdHJjYXNlY21wKGEtPnN1YnR5cGUsICJkZWxpdmVyeS1zdGF0dXMiKSkKKwkgICAgIG11dHRf
 YXNjaWlfc3RyY2FzZWNtcChhLT5zdWJ0eXBlLCAiZGVsaXZlcnktc3RhdHVzIikpCiAgICAgewog
 ICAgICAgaWYoYS0+ZW5jb2RpbmcgIT0gRU5DN0JJVCkKIAltdXR0X21lc3NhZ2VfdG9fN2JpdCAo
 YSwgTlVMTCk7CkBAIC04MDgsMTUgKzgwOCwxNSBAQAogICAKICAgaWYgKChXaXRoQ3J5cHRvICYg
 QVBQTElDQVRJT05fUEdQKQogICAgICAgJiYgcHJvdG9jb2xfbWFqb3IgPT0gVFlQRUFQUExJQ0FU
 SU9OCi0gICAgICAmJiAhbXV0dF9zdHJjYXNlY21wIChwcm90b2NvbF9taW5vciwgInBncC1zaWdu
 YXR1cmUiKSkKKyAgICAgICYmICFtdXR0X2FzY2lpX3N0cmNhc2VjbXAgKHByb3RvY29sX21pbm9y
 LCAicGdwLXNpZ25hdHVyZSIpKQogICAgIDsKICAgZWxzZSBpZiAoKFdpdGhDcnlwdG8gJiBBUFBM
 SUNBVElPTl9TTUlNRSkKICAgICAgICAgICAgJiYgcHJvdG9jb2xfbWFqb3IgPT0gVFlQRUFQUExJ
 Q0FUSU9OCi0JICAgJiYgIShtdXR0X3N0cmNhc2VjbXAgKHByb3RvY29sX21pbm9yLCAieC1wa2Nz
 Ny1zaWduYXR1cmUiKQotCSAgICAgICAmJiBtdXR0X3N0cmNhc2VjbXAgKHByb3RvY29sX21pbm9y
 LCAicGtjczctc2lnbmF0dXJlIikpKQorCSAgICYmICEobXV0dF9hc2NpaV9zdHJjYXNlY21wIChw
 cm90b2NvbF9taW5vciwgIngtcGtjczctc2lnbmF0dXJlIikKKwkgICAgICAgJiYgbXV0dF9hc2Np
 aV9zdHJjYXNlY21wIChwcm90b2NvbF9taW5vciwgInBrY3M3LXNpZ25hdHVyZSIpKSkKICAgICA7
 CiAgIGVsc2UgaWYgKHByb3RvY29sX21ham9yID09IFRZUEVNVUxUSVBBUlQKLQkgICAmJiAhbXV0
 dF9zdHJjYXNlY21wIChwcm90b2NvbF9taW5vciwgIm1peGVkIikpCisJICAgJiYgIW11dHRfYXNj
 aWlfc3RyY2FzZWNtcCAocHJvdG9jb2xfbWlub3IsICJtaXhlZCIpKQogICAgIDsKICAgZWxzZQog
 ICB7CkBAIC04NDAsNyArODQwLDcgQEAKIAl7CiAJICBpZiAoKFdpdGhDcnlwdG8gJiBBUFBMSUNB
 VElPTl9QR1ApCiAgICAgICAgICAgICAgICYmIHNpZ25hdHVyZXNbaV0tPnR5cGUgPT0gVFlQRUFQ
 UExJQ0FUSU9OIAotCSAgICAgICYmICFtdXR0X3N0cmNhc2VjbXAgKHNpZ25hdHVyZXNbaV0tPnN1
 YnR5cGUsICJwZ3Atc2lnbmF0dXJlIikpCisJICAgICAgJiYgIW11dHRfYXNjaWlfc3RyY2FzZWNt
 cCAoc2lnbmF0dXJlc1tpXS0+c3VidHlwZSwgInBncC1zaWduYXR1cmUiKSkKIAkgIHsKIAkgICAg
 aWYgKGNyeXB0X3BncF92ZXJpZnlfb25lIChzaWduYXR1cmVzW2ldLCBzLCB0ZW1wZmlsZSkgIT0g
 MCkKIAkgICAgICBnb29kc2lnID0gMDsKQEAgLTg1MCw4ICs4NTAsOCBAQAogCiAJICBpZiAoKFdp
 dGhDcnlwdG8gJiBBUFBMSUNBVElPTl9TTUlNRSkKICAgICAgICAgICAgICAgJiYgc2lnbmF0dXJl
 c1tpXS0+dHlwZSA9PSBUWVBFQVBQTElDQVRJT04gCi0JICAgICAgJiYgKCFtdXR0X3N0cmNhc2Vj
 bXAoc2lnbmF0dXJlc1tpXS0+c3VidHlwZSwgIngtcGtjczctc2lnbmF0dXJlIikKLQkJICB8fCAh
 bXV0dF9zdHJjYXNlY21wKHNpZ25hdHVyZXNbaV0tPnN1YnR5cGUsICJwa2NzNy1zaWduYXR1cmUi
 KSkpCisJICAgICAgJiYgKCFtdXR0X2FzY2lpX3N0cmNhc2VjbXAoc2lnbmF0dXJlc1tpXS0+c3Vi
 dHlwZSwgIngtcGtjczctc2lnbmF0dXJlIikKKwkJICB8fCAhbXV0dF9hc2NpaV9zdHJjYXNlY21w
 KHNpZ25hdHVyZXNbaV0tPnN1YnR5cGUsICJwa2NzNy1zaWduYXR1cmUiKSkpCiAJICB7CiAJICAg
 IGlmIChjcnlwdF9zbWltZV92ZXJpZnlfb25lIChzaWduYXR1cmVzW2ldLCBzLCB0ZW1wZmlsZSkg
 IT0gMCkKIAkgICAgICBnb29kc2lnID0gMDsKZGlmZiAtcnUgbXV0dC5vcmlnL2hhbmRsZXIuYyBt
 dXR0L2hhbmRsZXIuYwotLS0gbXV0dC5vcmlnL2hhbmRsZXIuYwkyMDA1LTExLTIyIDE0OjIxOjE0
 LjAwMDAwMDAwMCArMDIwMAorKysgbXV0dC9oYW5kbGVyLmMJMjAwNS0xMi0wMSAyMTowODoxOC4w
 MDAwMDAwMDAgKzAyMDAKQEAgLTE4NDMsNyArMTg0Myw3IEBACiAJaGFuZGxlciA9IG11dHRfc2ln
 bmVkX2hhbmRsZXI7CiAgICAgfQogICAgIGVsc2UgaWYgKChXaXRoQ3J5cHRvICYgQVBQTElDQVRJ
 T05fUEdQKQotICAgICAgICAgICAgICYmIG11dHRfc3RyY2FzZWNtcCAoImVuY3J5cHRlZCIsIGIt
 PnN1YnR5cGUpID09IDApCisgICAgICAgICAgICAgJiYgbXV0dF9hc2NpaV9zdHJjYXNlY21wICgi
 ZW5jcnlwdGVkIiwgYi0+c3VidHlwZSkgPT0gMCkKICAgICB7CiAgICAgICBwID0gbXV0dF9nZXRf
 cGFyYW1ldGVyICgicHJvdG9jb2wiLCBiLT5wYXJhbWV0ZXIpOwogCmRpZmYgLXJ1IG11dHQub3Jp
 Zy9pbml0LmMgbXV0dC9pbml0LmMKLS0tIG11dHQub3JpZy9pbml0LmMJMjAwNS0xMC0wNSAyMjoy
 NDo0MC4wMDAwMDAwMDAgKzAzMDAKKysrIG11dHQvaW5pdC5jCTIwMDUtMTItMDEgMjE6MDk6MjYu
 MDAwMDAwMDAwICswMjAwCkBAIC04MzQsOSArODM0LDkgQEAKICAgICBhID0gc2FmZV9tYWxsb2Mo
 c2l6ZW9mKEFUVEFDSF9NQVRDSCkpOwogCiAgICAgLyogc29tZSBjaGVhcCBoYWNrcyB0aGF0IEkg
 ZXhwZWN0IHRvIHJlbW92ZSAqLwotICAgIGlmICghbXV0dF9zdHJjYXNlY21wKGJ1Zi0+ZGF0YSwg
 ImFueSIpKQorICAgIGlmICghbXV0dF9hc2NpaV9zdHJjYXNlY21wKGJ1Zi0+ZGF0YSwgImFueSIp
 KQogICAgICAgYS0+bWFqb3IgPSBzYWZlX3N0cmR1cCgiKi8uKiIpOwotICAgIGVsc2UgaWYgKCFt
 dXR0X3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAibm9uZSIpKQorICAgIGVsc2UgaWYgKCFtdXR0X2Fz
 Y2lpX3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAibm9uZSIpKQogICAgICAgYS0+bWFqb3IgPSBzYWZl
 X3N0cmR1cCgiY2hlYXBfaGFjay90aGlzX3Nob3VsZF9uZXZlcl9tYXRjaCIpOwogICAgIGVsc2UK
 ICAgICAgIGEtPm1ham9yID0gc2FmZV9zdHJkdXAoYnVmLT5kYXRhKTsKQEAgLTg5OCw5ICs4OTgs
 OSBAQAogICB7CiAgICAgbXV0dF9leHRyYWN0X3Rva2VuIChidWYsIHMsIDApOwogCi0gICAgaWYg
 KCFtdXR0X3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAiYW55IikpCisgICAgaWYgKCFtdXR0X2FzY2lp
 X3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAiYW55IikpCiAgICAgICB0bXAgPSBzYWZlX3N0cmR1cCgi
 Ki8uKiIpOwotICAgIGVsc2UgaWYgKCFtdXR0X3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAibm9uZSIp
 KQorICAgIGVsc2UgaWYgKCFtdXR0X2FzY2lpX3N0cmNhc2VjbXAoYnVmLT5kYXRhLCAibm9uZSIp
 KQogICAgICAgdG1wID0gc2FmZV9zdHJkdXAoImNoZWFwX2hhY2svdGhpc19zaG91bGRfbmV2ZXJf
 bWF0Y2giKTsKICAgICBlbHNlCiAgICAgICB0bXAgPSBzYWZlX3N0cmR1cChidWYtPmRhdGEpOwpA
 QCAtMTAwMSwxMyArMTAwMSwxMyBAQAogICAgIG9wID0gJysnOwogICAgIGNhdGVnb3J5LS07CiAg
 IH0KLSAgaWYgKCFtdXR0X3N0cm5jYXNlY21wKGNhdGVnb3J5LCAiYXR0YWNobWVudCIsIHN0cmxl
 bihjYXRlZ29yeSkpKSB7CisgIGlmICghbXV0dF9hc2NpaV9zdHJuY2FzZWNtcChjYXRlZ29yeSwg
 ImF0dGFjaG1lbnQiLCBzdHJsZW4oY2F0ZWdvcnkpKSkgewogICAgIGlmIChvcCA9PSAnKycpCiAg
 ICAgICBsaXN0cCA9ICZBdHRhY2hBbGxvdzsKICAgICBlbHNlCiAgICAgICBsaXN0cCA9ICZBdHRh
 Y2hFeGNsdWRlOwogICB9Ci0gIGVsc2UgaWYgKCFtdXR0X3N0cm5jYXNlY21wKGNhdGVnb3J5LCAi
 aW5saW5lIiwgc3RybGVuKGNhdGVnb3J5KSkpIHsKKyAgZWxzZSBpZiAoIW11dHRfYXNjaWlfc3Ry
 bmNhc2VjbXAoY2F0ZWdvcnksICJpbmxpbmUiLCBzdHJsZW4oY2F0ZWdvcnkpKSkgewogICAgIGlm
 IChvcCA9PSAnKycpCiAgICAgICBsaXN0cCA9ICZJbmxpbmVBbGxvdzsKICAgICBlbHNlCkBAIC0x
 MDM4LDEzICsxMDM4LDEzIEBACiAgICAgb3AgPSAnKyc7CiAgICAgcC0tOwogICB9Ci0gIGlmICgh
 bXV0dF9zdHJuY2FzZWNtcChwLCAiYXR0YWNobWVudCIsIHN0cmxlbihwKSkpIHsKKyAgaWYgKCFt
 dXR0X2FzY2lpX3N0cm5jYXNlY21wKHAsICJhdHRhY2htZW50Iiwgc3RybGVuKHApKSkgewogICAg
 IGlmIChvcCA9PSAnKycpCiAgICAgICBsaXN0cCA9ICZBdHRhY2hBbGxvdzsKICAgICBlbHNlCiAg
 ICAgICBsaXN0cCA9ICZBdHRhY2hFeGNsdWRlOwogICB9Ci0gIGVsc2UgaWYgKCFtdXR0X3N0cm5j
 YXNlY21wKHAsICJpbmxpbmUiLCBzdHJsZW4ocCkpKSB7CisgIGVsc2UgaWYgKCFtdXR0X2FzY2lp
 X3N0cm5jYXNlY21wKHAsICJpbmxpbmUiLCBzdHJsZW4ocCkpKSB7CiAgICAgaWYgKG9wID09ICcr
 JykKICAgICAgIGxpc3RwID0gJklubGluZUFsbG93OwogICAgIGVsc2UKZGlmZiAtcnUgbXV0dC5v
 cmlnL2xpYi5jIG11dHQvbGliLmMKLS0tIG11dHQub3JpZy9saWIuYwkyMDA1LTA5LTE3IDIzOjQ2
 OjEwLjAwMDAwMDAwMCArMDMwMAorKysgbXV0dC9saWIuYwkyMDA1LTEyLTAxIDIxOjEwOjEyLjAw
 MDAwMDAwMCArMDIwMApAQCAtNDYsNiArNDYsNyBAQAogI2RlZmluZSBFWF9PSyAwCiAjZW5kaWYK
 IAorI2luY2x1ZGUgImFzY2lpLmgiCiAjaW5jbHVkZSAibGliLmgiCiAKIHN0YXRpYyBzdHJ1Y3Qg
 c3lzZXhpdHMKQEAgLTcwNCw2ICs3MDUsMTEgQEAKICAgcmV0dXJuIHN0cmNhc2VjbXAoTk9OVUxM
 KGEpLCBOT05VTEwoYikpOwogfQogCitpbnQgbXV0dF9hc2NpaV9zdHJjYXNlY21wKGNvbnN0IGNo
 YXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisgIHJldHVybiBhc2NpaV9zdHJjYXNlY21wKE5PTlVM
 TChhKSwgTk9OVUxMKGIpKTsKK30KKwogaW50IG11dHRfc3RybmNtcChjb25zdCBjaGFyICphLCBj
 b25zdCBjaGFyICpiLCBzaXplX3QgbCkKIHsKICAgcmV0dXJuIHN0cm5jbXAoTk9OVUxMKGEpLCBO
 T05VTEwoYiksIGwpOwpAQCAtNzE0LDYgKzcyMCwxMSBAQAogICByZXR1cm4gc3RybmNhc2VjbXAo
 Tk9OVUxMKGEpLCBOT05VTEwoYiksIGwpOwogfQogCitpbnQgbXV0dF9hc2NpaV9zdHJuY2FzZWNt
 cChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBzaXplX3QgbCkKK3sKKyAgcmV0dXJuIGFz
 Y2lpX3N0cm5jYXNlY21wKE5PTlVMTChhKSwgTk9OVUxMKGIpLCBsKTsKK30KKwogc2l6ZV90IG11
 dHRfc3RybGVuKGNvbnN0IGNoYXIgKmEpCiB7CiAgIHJldHVybiBhID8gc3RybGVuIChhKSA6IDA7
 CmRpZmYgLXJ1IG11dHQub3JpZy9saWIuaCBtdXR0L2xpYi5oCi0tLSBtdXR0Lm9yaWcvbGliLmgJ
 MjAwNS0wOS0xNyAyMzo0NjoxMC4wMDAwMDAwMDAgKzAzMDAKKysrIG11dHQvbGliLmgJMjAwNS0x
 Mi0wMSAyMToxMjo0MC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEyOCw4ICsxMjgsMTAgQEAKIGludCBt
 dXR0X2NvcHlfYnl0ZXMgKEZJTEUgKiwgRklMRSAqLCBzaXplX3QpOwogaW50IG11dHRfcnhfc2Fu
 aXRpemVfc3RyaW5nIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqKTsKIGludCBtdXR0X3N0
 cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKK2ludCBtdXR0X2FzY2lpX3N0
 cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGludCBtdXR0X3N0cmNtcCAo
 Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogaW50IG11dHRfc3RybmNhc2VjbXAgKGNvbnN0
 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOworaW50IG11dHRfYXNjaWlfc3RybmNhc2Vj
 bXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogaW50IG11dHRfc3RybmNt
 cCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CiBpbnQgbXV0dF9zdHJjb2xs
 IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBpbnQgc2FmZV9vcGVuIChjb25zdCBjaGFy
 ICosIGludCk7CmRpZmYgLXJ1IG11dHQub3JpZy9wYXJzZS5jIG11dHQvcGFyc2UuYwotLS0gbXV0
 dC5vcmlnL3BhcnNlLmMJMjAwNS0xMC0yMSAwNzozNTozNy4wMDAwMDAwMDAgKzAzMDAKKysrIG11
 dHQvcGFyc2UuYwkyMDA1LTEyLTAxIDIxOjEwOjM2LjAwMDAwMDAwMCArMDIwMApAQCAtMTU0Miw3
 ICsxNTQyLDcgQEAKICAgICB7CiAgICAgICAvKiBBbHdheXMgcmVjdXJzZSBtdWx0aXBhcnRzLCBl
 eGNlcHQgbXVsdGlwYXJ0L2FsdGVybmF0aXZlLiAqLwogICAgICAgc2hhbGxyZWN1cnNlID0gMTsK
 LSAgICAgIGlmICghbXV0dF9zdHJjYXNlY21wKGJwLT5zdWJ0eXBlLCAiYWx0ZXJuYXRpdmUiKSkK
 KyAgICAgIGlmICghbXV0dF9hc2NpaV9zdHJjYXNlY21wKGJwLT5zdWJ0eXBlLCAiYWx0ZXJuYXRp
 dmUiKSkKICAgICAgICAgc2hhbGxyZWN1cnNlID0gMDsKIAogICAgICAgLyogRG9uJ3QgY291bnQg
 Y29udGFpbmVycyBpZiB0aGV5J3JlIHRvcC1sZXZlbC4gKi8KZGlmZiAtcnUgbXV0dC5vcmlnL3Nt
 aW1lLmMgbXV0dC9zbWltZS5jCi0tLSBtdXR0Lm9yaWcvc21pbWUuYwkyMDA1LTEwLTIxIDA3OjM1
 OjM4LjAwMDAwMDAwMCArMDMwMAorKysgbXV0dC9zbWltZS5jCTIwMDUtMTItMDEgMjE6MTE6NTUu
 MDAwMDAwMDAwICswMjAwCkBAIC0xNjIxLDcgKzE2MjEsNyBAQAogICAgICAgcmV3aW5kIChzbWlt
 ZWVycik7CiAgICAgICAKICAgICAgIGxpbmUgPSBtdXR0X3JlYWRfbGluZSAobGluZSwgJmxpbmVs
 ZW4sIHNtaW1lZXJyLCAmbGluZW5vKTsKLSAgICAgIGlmIChsaW5lbGVuICYmICFtdXR0X3N0cmNh
 c2VjbXAgKGxpbmUsICJ2ZXJpZmljYXRpb24gc3VjY2Vzc2Z1bCIpKQorICAgICAgaWYgKGxpbmVs
 ZW4gJiYgIW11dHRfYXNjaWlfc3RyY2FzZWNtcCAobGluZSwgInZlcmlmaWNhdGlvbiBzdWNjZXNz
 ZnVsIikpCiAJYmFkc2lnID0gMDsKIAogICAgICAgRlJFRSAoJmxpbmUpOwpAQCAtMTg0Miw3ICsx
 ODQyLDcgQEAKICAgICByZXdpbmQgKHNtaW1lZXJyKTsKICAgICAKICAgICBsaW5lID0gbXV0dF9y
 ZWFkX2xpbmUgKGxpbmUsICZsaW5lbGVuLCBzbWltZWVyciwgJmxpbmVubyk7Ci0gICAgaWYgKGxp
 bmVsZW4gJiYgIW11dHRfc3RyY2FzZWNtcCAobGluZSwgInZlcmlmaWNhdGlvbiBzdWNjZXNzZnVs
 IikpCisgICAgaWYgKGxpbmVsZW4gJiYgIW11dHRfYXNjaWlfc3RyY2FzZWNtcCAobGluZSwgInZl
 cmlmaWNhdGlvbiBzdWNjZXNzZnVsIikpCiAgICAgICBtLT5nb29kc2lnID0gMTsKICAgICBGUkVF
 ICgmbGluZSk7CiAgIH0K