From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============1688978641784089744==" MIME-Version: 1.0 From: Andrzej Zaborowski Subject: Re: [PATCH] [RFC] Do the PIN check in SIMManager Date: Tue, 08 Sep 2009 04:41:42 +0200 Message-ID: In-Reply-To: <4AA4D80C.1090104@inz.fi> List-Id: To: ofono@ofono.org --===============1688978641784089744== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Santtu, 2009/9/7 Santtu Lakkala : > Andrzej Zaborowski wrote: >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (i =3D 0; i < len; i++) >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = if (!g_str_has_suffix(pin_required, >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 at_sim_name[i].name)) >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 pin_type =3D at_sim_name[i].type; > > Should this be: >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (i =3D 0; i < len; i++) >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = if (g_str_has_suffix(pin_required, >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 at_sim_name[i].name)) { Ugh, yes, this was wrong but what I wanted was g_str_has_prefix() and no break; so that the loop would effectively find the longest matching prefix. I now replaced it with full strcmp() and made use of Denis' newly added g_at_result_iter_next_unquoted_string call. Maybe we should pass the PIN type as string instead of enum and allow any name beside the 27.007-defined ones. Regards, Andrew --===============1688978641784089744== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Do-the-PIN-check-in-SIMManager.patch" RnJvbSAxYTViZjI5ZjdlZjE0ZmQwMTBkNjM3ZDk0ZGFkYWVhOWQzZjhmNjJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGFuZHJldy56YWJvcm93c2tp QGludGVsLmNvbT4KRGF0ZTogVHVlLCA4IFNlcCAyMDA5IDA2OjMzOjI1ICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gRG8gdGhlIFBJTiBjaGVjayBpbiBTSU1NYW5hZ2VyCgpUaGlzIGFkZHMgY2hlY2tp bmcgd2hldGhlciBQSU4gaXMgcmVxdWlyZWQgZHVyaW5nIFNJTSBpbml0aWFsaXNhdGlvbiBhbmQK ZGVsYXlpbmcgdGhlIHNpbSByZWFkeSBub3RpZmljYXRpb25zIHVudGlsIGFmdGVyIGNvcnJlY3Qg UElOIGlzIGdpdmVuLgpBY2NvcmRpbmcgdG8gMzEuMTAyIHRoZSBJTVNJIHNob3VsZCBiZSByZXRy aWV2ZWQgYWZ0ZXIgdGhlIFBJTiBjaGVjawpob3dldmVyIG9uIHRoZSBTSU1zIEkndmUgdHJpZWQg aXQgY2FuIGJlIHJldHJpZXZlZCBiZWZvcmUgYXV0aGVudGljYXRpb24KYW5kIEkgdGhpbmsgaXQg d291bGQgbWFrZSBzZW5zZSB0byBwcm92aWRlIHRoZSBpbXNpIHRvIHRoZSBjbGllbnRzIHNvCnRo ZXkga25vdyB3aGljaCBjYXJkIHRoZXkncmUgYXV0aGVudGljYXRpbmcgdG8gaWYgdGhleSdyZSBz d2FwcGluZyBjYXJkcy4KLS0tCiBkcml2ZXJzL2F0bW9kZW0vc2ltLmMgfCAgMTcyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvc2ltLmgg ICAgICAgICB8ICAgMTMgKysrKwogaW5jbHVkZS90eXBlcy5oICAgICAgIHwgICAyMCArKysrKysK IHNyYy9zaW0uYyAgICAgICAgICAgICB8ICAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCiBzcmMvc2ltdXRpbC5jICAgICAgICAgfCAgIDI0ICsrKysrKysKIHNyYy9z aW11dGlsLmggICAgICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAzNjYgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bW9kZW0vc2ltLmMg Yi9kcml2ZXJzL2F0bW9kZW0vc2ltLmMKaW5kZXggZmNkNzg5NS4uODI4OGM3OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9hdG1vZGVtL3NpbS5jCisrKyBiL2RyaXZlcnMvYXRtb2RlbS9zaW0uYwpAQCAt NDMxLDYgKzQzMSwxNzUgQEAgZXJyb3I6CiAJfQogfQogCitzdGF0aWMgc3RydWN0IHsKKwllbnVt IG9mb25vX3NpbV9wYXNzd2RfdHlwZSB0eXBlOworCWNvbnN0IGNoYXIgKm5hbWU7Cit9IGNvbnN0 IGF0X3NpbV9uYW1lW10gPSB7CisJeyBPRk9OT19QQVNTV0RfU0lNX1BJTiwgIlNJTSBQSU4iIH0s CisJeyBPRk9OT19QQVNTV0RfU0lNX1BVSywgIlNJTSBQVUsiIH0sCisJeyBPRk9OT19QQVNTV0Rf UEhTSU1fUElOLCAiUEgtU0lNIFBJTiIgfSwKKwl7IE9GT05PX1BBU1NXRF9QSEZTSU1fUElOLCAi UEgtRlNJTSBQSU4iIH0sCisJeyBPRk9OT19QQVNTV0RfUEhGU0lNX1BVSywgIlBILUZTSU0gUFVL IiB9LAorCXsgT0ZPTk9fUEFTU1dEX1NJTV9QSU4yLCAiU0lNIFBJTjIiIH0sCisJeyBPRk9OT19Q QVNTV0RfU0lNX1BVSzIsICJTSU0gUFVLMiIgfSwKKwl7IE9GT05PX1BBU1NXRF9QSE5FVF9QSU4s ICJQSC1ORVQgUElOIiB9LAorCXsgT0ZPTk9fUEFTU1dEX1BITkVUX1BVSywgIlBILU5FVCBQVUsi IH0sCisJeyBPRk9OT19QQVNTV0RfUEhORVRTVUJfUElOLCAiUEgtTkVUU1VCIFBJTiIgfSwKKwl7 IE9GT05PX1BBU1NXRF9QSE5FVFNVQl9QVUssICJQSC1ORVRTVUIgUFVLIiB9LAorCXsgT0ZPTk9f UEFTU1dEX1BIU1BfUElOLCAiUEgtU1AgUElOIiB9LAorCXsgT0ZPTk9fUEFTU1dEX1BIU1BfUFVL LCAiUEgtU1AgUFVLIiB9LAorCXsgT0ZPTk9fUEFTU1dEX1BIQ09SUF9QSU4sICJQSC1DT1JQIFBJ TiIgfSwKKwl7IE9GT05PX1BBU1NXRF9QSENPUlBfUFVLLCAiUEgtQ09SUCBQVUsiIH0sCit9Owor CitzdGF0aWMgdm9pZCBhdF9jcGluX2NiKGdib29sZWFuIG9rLCBHQXRSZXN1bHQgKnJlc3VsdCwg Z3BvaW50ZXIgdXNlcl9kYXRhKQoreworCXN0cnVjdCBjYl9kYXRhICpjYmQgPSB1c2VyX2RhdGE7 CisJR0F0UmVzdWx0SXRlciBpdGVyOworCW9mb25vX3NpbV9wYXNzd2RfY2JfdCBjYiA9IGNiZC0+ Y2I7CisJc3RydWN0IG9mb25vX2Vycm9yIGVycm9yOworCWNvbnN0IGNoYXIgKnBpbl9yZXF1aXJl ZDsKKwlpbnQgcGluX3R5cGU7CisJaW50IGk7CisJaW50IGxlbiA9IHNpemVvZihhdF9zaW1fbmFt ZSkgLyBzaXplb2YoKmF0X3NpbV9uYW1lKTsKKworCWR1bXBfcmVzcG9uc2UoImF0X2NwaW5fY2Ii LCBvaywgcmVzdWx0KTsKKwlkZWNvZGVfYXRfZXJyb3IoJmVycm9yLCBnX2F0X3Jlc3VsdF9maW5h bF9yZXNwb25zZShyZXN1bHQpKTsKKworCWlmICghb2spIHsKKwkJY2IoJmVycm9yLCAtMSwgY2Jk LT5kYXRhKTsKKwkJcmV0dXJuOworCX0KKworCWdfYXRfcmVzdWx0X2l0ZXJfaW5pdCgmaXRlciwg cmVzdWx0KTsKKworCWlmICghZ19hdF9yZXN1bHRfaXRlcl9uZXh0KCZpdGVyLCAiK0NQSU46Iikp IHsKKwkJREVDTEFSRV9GQUlMVVJFKGUpOworCisJCWNiKCZlLCAtMSwgY2JkLT5kYXRhKTsKKwkJ cmV0dXJuOworCX0KKworCWdfYXRfcmVzdWx0X2l0ZXJfbmV4dF91bnF1b3RlZF9zdHJpbmcoJml0 ZXIsICZwaW5fcmVxdWlyZWQpOworCisJcGluX3R5cGUgPSAtMTsKKwlpZiAoIXN0cmNtcChwaW5f cmVxdWlyZWQsICJSRUFEWSIpKQorCQlwaW5fdHlwZSA9IE9GT05PX1BBU1NXRF9OT05FOworCWVs c2UKKwkJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorCQkJaWYgKCFzdHJjbXAocGluX3JlcXVp cmVkLCBhdF9zaW1fbmFtZVtpXS5uYW1lKSkgeworCQkJCXBpbl90eXBlID0gYXRfc2ltX25hbWVb aV0udHlwZTsKKwkJCQlicmVhazsKKwkJCX0KKworCWlmIChwaW5fdHlwZSA9PSAtMSkgeworCQlE RUNMQVJFX0ZBSUxVUkUoZSk7CisKKwkJY2IoJmUsIC0xLCBjYmQtPmRhdGEpOworCQlyZXR1cm47 CisJfQorCisJb2Zvbm9fZGVidWcoImNyc21fcGluX2NiOiAlcyIsIHBpbl9yZXF1aXJlZCk7CisK KwljYigmZXJyb3IsIHBpbl90eXBlLCBjYmQtPmRhdGEpOworfQorCitzdGF0aWMgdm9pZCBhdF9w aW5fcXVlcnkoc3RydWN0IG9mb25vX3NpbSAqc2ltLCBvZm9ub19zaW1fcGFzc3dkX2NiX3QgY2Is CisJCQl2b2lkICpkYXRhKQoreworCUdBdENoYXQgKmNoYXQgPSBvZm9ub19zaW1fZ2V0X2RhdGEo c2ltKTsKKwlzdHJ1Y3QgY2JfZGF0YSAqY2JkID0gY2JfZGF0YV9uZXcoY2IsIGRhdGEpOworCisJ aWYgKCFjYmQpCisJCWdvdG8gZXJyb3I7CisKKwlpZiAoZ19hdF9jaGF0X3NlbmQoY2hhdCwgIkFU K0NQSU4/IiwgTlVMTCwKKwkJCQlhdF9jcGluX2NiLCBjYmQsIGdfZnJlZSkgPiAwKQorCQlyZXR1 cm47CisKK2Vycm9yOgorCWlmIChjYmQpCisJCWdfZnJlZShjYmQpOworCisJeworCQlERUNMQVJF X0ZBSUxVUkUoZXJyb3IpOworCQljYigmZXJyb3IsIC0xLCBkYXRhKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGF0X2NwaW5fc2V0X2NiKGdib29sZWFuIG9rLCBHQXRSZXN1bHQgKnJlc3VsdCwgZ3Bv aW50ZXIgdXNlcl9kYXRhKQoreworCXN0cnVjdCBjYl9kYXRhICpjYmQgPSB1c2VyX2RhdGE7CisJ b2Zvbm9fc2ltX3Bhc3N3ZF9zZW5kX2NiX3QgY2IgPSBjYmQtPmNiOworCXN0cnVjdCBvZm9ub19l cnJvciBlcnJvcjsKKworCWR1bXBfcmVzcG9uc2UoImF0X2NwaW5fc2V0X2NiIiwgb2ssIHJlc3Vs dCk7CisJZGVjb2RlX2F0X2Vycm9yKCZlcnJvciwgZ19hdF9yZXN1bHRfZmluYWxfcmVzcG9uc2Uo cmVzdWx0KSk7CisKKwljYigmZXJyb3IsIGNiZC0+ZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIGF0 X3Bpbl9zZW5kKHN0cnVjdCBvZm9ub19zaW0gKnNpbSwgY29uc3QgY2hhciAqcGFzc3dkLAorCQkJ b2Zvbm9fc2ltX3Bhc3N3ZF9zZW5kX2NiX3QgY2IsIHZvaWQgKmRhdGEpCit7CisJR0F0Q2hhdCAq Y2hhdCA9IG9mb25vX3NpbV9nZXRfZGF0YShzaW0pOworCXN0cnVjdCBjYl9kYXRhICpjYmQgPSBj Yl9kYXRhX25ldyhjYiwgZGF0YSk7CisJY2hhciBidWZbNjRdOworCWludCByZXQ7CisKKwlpZiAo IWNiZCkKKwkJZ290byBlcnJvcjsKKworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJBVCtD UElOPVwiJXNcIiIsIHBhc3N3ZCk7CisKKwlyZXQgPSBnX2F0X2NoYXRfc2VuZChjaGF0LCBidWYs IE5VTEwsIGF0X2NwaW5fc2V0X2NiLCBjYmQsIGdfZnJlZSk7CisKKwltZW1zZXQoYnVmLCAwLCBz aXplb2YoYnVmKSk7CisKKwlpZiAocmV0ID4gMCkKKwkJcmV0dXJuOworCitlcnJvcjoKKwlpZiAo Y2JkKQorCQlnX2ZyZWUoY2JkKTsKKworCXsKKwkJREVDTEFSRV9GQUlMVVJFKGVycm9yKTsKKwkJ Y2IoJmVycm9yLCBkYXRhKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGF0X3Bpbl9zZW5kX3B1ayhz dHJ1Y3Qgb2Zvbm9fc2ltICpzaW0sIGNvbnN0IGNoYXIgKnB1aywKKwkJCQljb25zdCBjaGFyICpw YXNzd2QsCisJCQkJb2Zvbm9fc2ltX3Bhc3N3ZF9zZW5kX2NiX3QgY2IsIHZvaWQgKmRhdGEpCit7 CisJR0F0Q2hhdCAqY2hhdCA9IG9mb25vX3NpbV9nZXRfZGF0YShzaW0pOworCXN0cnVjdCBjYl9k YXRhICpjYmQgPSBjYl9kYXRhX25ldyhjYiwgZGF0YSk7CisJY2hhciBidWZbNjRdOworCWludCBy ZXQ7CisKKwlpZiAoIWNiZCkKKwkJZ290byBlcnJvcjsKKworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9m KGJ1ZiksICJBVCtDUElOPVwiJXNcIixcIiVzXCIiLCBwdWssIHBhc3N3ZCk7CisKKwlyZXQgPSBn X2F0X2NoYXRfc2VuZChjaGF0LCBidWYsIE5VTEwsIGF0X2NwaW5fc2V0X2NiLCBjYmQsIGdfZnJl ZSk7CisKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisKKwlpZiAocmV0ID4gMCkKKwkJ cmV0dXJuOworCitlcnJvcjoKKwlpZiAoY2JkKQorCQlnX2ZyZWUoY2JkKTsKKworCXsKKwkJREVD TEFSRV9GQUlMVVJFKGVycm9yKTsKKwkJY2IoJmVycm9yLCBkYXRhKTsKKwl9Cit9CisKIHN0YXRp YyBnYm9vbGVhbiBhdF9zaW1fcmVnaXN0ZXIoZ3BvaW50ZXIgdXNlcikKIHsKIAlzdHJ1Y3Qgb2Zv bm9fc2ltICpzaW0gPSB1c2VyOwpAQCAtNDY3LDYgKzYzNiw5IEBAIHN0YXRpYyBzdHJ1Y3Qgb2Zv bm9fc2ltX2RyaXZlciBkcml2ZXIgPSB7CiAJLndyaXRlX2ZpbGVfbGluZWFyCT0gYXRfc2ltX3Vw ZGF0ZV9yZWNvcmQsCiAJLndyaXRlX2ZpbGVfY3ljbGljCT0gYXRfc2ltX3VwZGF0ZV9jeWNsaWMs CiAJLnJlYWRfaW1zaQkJPSBhdF9yZWFkX2ltc2ksCisJLnF1ZXJ5X3Bhc3N3ZF9zdGF0ZQk9IGF0 X3Bpbl9xdWVyeSwKKwkuc2VuZF9wYXNzd2QJCT0gYXRfcGluX3NlbmQsCisJLnNlbmRfbmV3X3Bh c3N3ZAk9IGF0X3Bpbl9zZW5kX3B1aywKIH07CiAKIHZvaWQgYXRfc2ltX2luaXQoKQpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9zaW0uaCBiL2luY2x1ZGUvc2ltLmgKaW5kZXggMWRhNDg2Yy4uOTBiZWRh ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zaW0uaAorKysgYi9pbmNsdWRlL3NpbS5oCkBAIC02NCw2 ICs2NCwxMiBAQCB0eXBlZGVmIHZvaWQgKCpvZm9ub19zaW1fZmlsZV9yZWFkX2NiX3QpKGludCBv aywKIAogdHlwZWRlZiB2b2lkICgqb2Zvbm9fc2ltX2ZpbGVfd3JpdGVfY2JfdCkoaW50IG9rLCB2 b2lkICp1c2VyZGF0YSk7CiAKK3R5cGVkZWYgdm9pZCAoKm9mb25vX3NpbV9wYXNzd2RfY2JfdCko Y29uc3Qgc3RydWN0IG9mb25vX2Vycm9yICplcnJvciwKKwkJCQkJaW50IHBhc3N3ZF90eXBlLCB2 b2lkICpkYXRhKTsKKwordHlwZWRlZiB2b2lkICgqb2Zvbm9fc2ltX3Bhc3N3ZF9zZW5kX2NiX3Qp KGNvbnN0IHN0cnVjdCBvZm9ub19lcnJvciAqZXJyb3IsCisJCQkJCXZvaWQgKmRhdGEpOworCiBz dHJ1Y3Qgb2Zvbm9fc2ltX2RyaXZlciB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgKCpwcm9i ZSkoc3RydWN0IG9mb25vX3NpbSAqc2ltLCB1bnNpZ25lZCBpbnQgdmVuZG9yLCB2b2lkICpkYXRh KTsKQEAgLTkwLDYgKzk2LDEzIEBAIHN0cnVjdCBvZm9ub19zaW1fZHJpdmVyIHsKIAkJCW9mb25v X3NpbV93cml0ZV9jYl90IGNiLCB2b2lkICpkYXRhKTsKIAl2b2lkICgqcmVhZF9pbXNpKShzdHJ1 Y3Qgb2Zvbm9fc2ltICpzaW0sCiAJCQlvZm9ub19zaW1faW1zaV9jYl90IGNiLCB2b2lkICpkYXRh KTsKKwl2b2lkICgqcXVlcnlfcGFzc3dkX3N0YXRlKShzdHJ1Y3Qgb2Zvbm9fc2ltICpzaW0sCisJ CQlvZm9ub19zaW1fcGFzc3dkX2NiX3QgY2IsIHZvaWQgKmRhdGEpOworCXZvaWQgKCpzZW5kX3Bh c3N3ZCkoc3RydWN0IG9mb25vX3NpbSAqc2ltLCBjb25zdCBjaGFyICpwYXNzd2QsCisJCQlvZm9u b19zaW1fcGFzc3dkX3NlbmRfY2JfdCBjYiwgdm9pZCAqZGF0YSk7CisJdm9pZCAoKnNlbmRfbmV3 X3Bhc3N3ZCkoc3RydWN0IG9mb25vX3NpbSAqc2ltLCBjb25zdCBjaGFyICpwdWssCisJCQljb25z dCBjaGFyICpwYXNzd2QsCisJCQlvZm9ub19zaW1fcGFzc3dkX3NlbmRfY2JfdCBjYiwgdm9pZCAq ZGF0YSk7CiB9OwogCiBpbnQgb2Zvbm9fc2ltX2RyaXZlcl9yZWdpc3Rlcihjb25zdCBzdHJ1Y3Qg b2Zvbm9fc2ltX2RyaXZlciAqZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3R5cGVzLmggYi9pbmNs dWRlL3R5cGVzLmgKaW5kZXggNmE5NjgxZC4uOTllMmNhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS90 eXBlcy5oCisrKyBiL2luY2x1ZGUvdHlwZXMuaApAQCAtOTEsNiArOTEsMjYgQEAgc3RydWN0IG9m b25vX2NhbGwgewogCWludCBjbGlwX3ZhbGlkaXR5OwogfTsKIAorZW51bSBvZm9ub19zaW1fcGFz c3dkX3R5cGUgeworCU9GT05PX1BBU1NXRF9OT05FID0gMCwKKworCU9GT05PX1BBU1NXRF9TSU1f UElOLAorCU9GT05PX1BBU1NXRF9TSU1fUFVLLAorCU9GT05PX1BBU1NXRF9QSFNJTV9QSU4sCisJ T0ZPTk9fUEFTU1dEX1BIRlNJTV9QSU4sCisJT0ZPTk9fUEFTU1dEX1BIRlNJTV9QVUssCisJT0ZP Tk9fUEFTU1dEX1NJTV9QSU4yLAorCU9GT05PX1BBU1NXRF9TSU1fUFVLMiwKKwlPRk9OT19QQVNT V0RfUEhORVRfUElOLAorCU9GT05PX1BBU1NXRF9QSE5FVF9QVUssCisJT0ZPTk9fUEFTU1dEX1BI TkVUU1VCX1BJTiwKKwlPRk9OT19QQVNTV0RfUEhORVRTVUJfUFVLLAorCU9GT05PX1BBU1NXRF9Q SFNQX1BJTiwKKwlPRk9OT19QQVNTV0RfUEhTUF9QVUssCisJT0ZPTk9fUEFTU1dEX1BIQ09SUF9Q SU4sCisJT0ZPTk9fUEFTU1dEX1BIQ09SUF9QVUssCit9OworCiAjaWZkZWYgX19jcGx1c3BsdXMK IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3NpbS5jIGIvc3JjL3NpbS5jCmluZGV4IGEwNzJj OGMuLjQ0ZjBhM2IgMTAwNjQ0Ci0tLSBhL3NyYy9zaW0uYworKysgYi9zcmMvc2ltLmMKQEAgLTU1 LDYgKzU1LDcgQEAgc3RhdGljIEdTTGlzdCAqZ19kcml2ZXJzID0gTlVMTDsKIHN0YXRpYyBnYm9v bGVhbiBzaW1fb3BfbmV4dChncG9pbnRlciB1c2VyX2RhdGEpOwogc3RhdGljIGdib29sZWFuIHNp bV9vcF9yZXRyaWV2ZV9uZXh0KGdwb2ludGVyIHVzZXIpOwogc3RhdGljIHZvaWQgc2ltX293bl9u dW1iZXJzX3VwZGF0ZShzdHJ1Y3Qgb2Zvbm9fc2ltICpzaW0pOworc3RhdGljIHZvaWQgc2ltX3Bp bl9jaGVjayhzdHJ1Y3Qgb2Zvbm9fc2ltICpzaW0pOwogCiBzdHJ1Y3Qgc2ltX2ZpbGVfb3Agewog CWludCBpZDsKQEAgLTc3LDYgKzc4LDggQEAgc3RydWN0IG9mb25vX3NpbSB7CiAJR1NMaXN0ICpz ZXJ2aWNlX251bWJlcnM7CiAJZ2Jvb2xlYW4gc2RuX3JlYWR5OwogCWdib29sZWFuIHJlYWR5Owor CWdib29sZWFuIHBpbl9yZWFkeTsKKwlpbnQgcGluX3R5cGU7CiAJR1F1ZXVlICpzaW1vcF9xOwog CWdpbnQgc2ltb3Bfc291cmNlOwogCXVuc2lnbmVkIGNoYXIgZWZtc2lzZG5fbGVuZ3RoOwpAQCAt ODYsNiArODksNyBAQCBzdHJ1Y3Qgb2Zvbm9fc2ltIHsKIAljb25zdCBzdHJ1Y3Qgb2Zvbm9fc2lt X2RyaXZlciAqZHJpdmVyOwogCXZvaWQgKmRyaXZlcl9kYXRhOwogCXN0cnVjdCBvZm9ub19hdG9t ICphdG9tOworCURCdXNNZXNzYWdlICpwZW5kaW5nOwogfTsKIAogc3RydWN0IG1zaXNkbl9zZXRf cmVxdWVzdCB7CkBAIC05NSw2ICs5OSw3IEBAIHN0cnVjdCBtc2lzZG5fc2V0X3JlcXVlc3Qgewog CURCdXNNZXNzYWdlICptc2c7CiB9OwogCisKIHN0cnVjdCBzaW1fcmVhZHlfd2F0Y2ggewogCXVu c2lnbmVkIGludCBpZDsKIAlvZm9ub19zaW1fcmVhZHlfbm90aWZ5X2NiX3Qgbm90aWZ5OwpAQCAt MTcxLDYgKzE3Niw4IEBAIHN0YXRpYyBEQnVzTWVzc2FnZSAqc2ltX2dldF9wcm9wZXJ0aWVzKERC dXNDb25uZWN0aW9uICpjb25uLAogCURCdXNNZXNzYWdlSXRlciBkaWN0OwogCWNoYXIgKipvd25f bnVtYmVyczsKIAljaGFyICoqc2VydmljZV9udW1iZXJzOworCWRidXNfYm9vbF90IHBpbl9uZWVk ZWQ7CisJY29uc3QgY2hhciAqcGluX25hbWU7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdf bWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC0yMDUsNiArMjEyLDE4IEBAIHN0 YXRpYyBEQnVzTWVzc2FnZSAqc2ltX2dldF9wcm9wZXJ0aWVzKERCdXNDb25uZWN0aW9uICpjb25u LAogCQlnX3N0cmZyZWV2KHNlcnZpY2VfbnVtYmVycyk7CiAJfQogCisJcGluX25lZWRlZCA9ICFz aW0tPnBpbl9yZWFkeTsKKwlvZm9ub19kYnVzX2RpY3RfYXBwZW5kKCZkaWN0LCAiV2FpdGluZ0Zv clBJTiIsCisJCQkJREJVU19UWVBFX0JPT0xFQU4sICZwaW5fbmVlZGVkKTsKKworCWlmIChzaW0t PnBpbl90eXBlICE9IE9GT05PX1BBU1NXRF9OT05FKSB7CisJCXBpbl9uYW1lID0gc2ltX3Bhc3N3 ZF9uYW1lKHNpbS0+cGluX3R5cGUpOworCisJCW9mb25vX2RidXNfZGljdF9hcHBlbmQoJmRpY3Qs ICJQSU5UeXBlUmVxdWlyZWQiLAorCQkJCQlEQlVTX1RZUEVfU1RSSU5HLAorCQkJCQkodm9pZCAq KSAmcGluX25hbWUpOworCX0KKwogCWRidXNfbWVzc2FnZV9pdGVyX2Nsb3NlX2NvbnRhaW5lcigm aXRlciwgJmRpY3QpOwogCiAJcmV0dXJuIHJlcGx5OwpAQCAtMzUzLDEwICszNzIsNjQgQEAgZXJy b3I6CiAJcmV0dXJuIF9fb2Zvbm9fZXJyb3JfaW52YWxpZF9hcmdzKG1zZyk7CiB9CiAKK3N0YXRp YyB2b2lkIHNpbV9zZW5kX3Bpbl9jYihjb25zdCBzdHJ1Y3Qgb2Zvbm9fZXJyb3IgKmVycm9yLCB2 b2lkICpkYXRhKQoreworCXN0cnVjdCBvZm9ub19zaW0gKnNpbSA9IGRhdGE7CisJREJ1c01lc3Nh Z2UgKnJlcGx5OworCisJaWYgKGVycm9yLT50eXBlICE9IE9GT05PX0VSUk9SX1RZUEVfTk9fRVJS T1IpCisJCXJlcGx5ID0gX19vZm9ub19lcnJvcl9mYWlsZWQoc2ltLT5wZW5kaW5nKTsKKwllbHNl CisJCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKHNpbS0+cGVuZGluZyk7 CisKKworCV9fb2Zvbm9fZGJ1c19wZW5kaW5nX3JlcGx5KCZzaW0tPnBlbmRpbmcsIHJlcGx5KTsK KworCS8qIFJlLWNoZWNrIHRoZSBhdXRoZW50aWNhdGlvbiBzdGF0dXMgYW5kIHVwZGF0ZSBEQnVz IHByb3BlcnRpZXMKKwkgKiBhcyBuZWVkZWQuICBXZSBuZWVkIHRvIGRvIHRoaXMgcmVnYXJkbGVz cyBvZiB3aGV0aGVyIHRoZSBwYXNzd29yZAorCSAqIGdpdmVuIHdhcyBjb3JyZWN0OiBpZiBpdCB3 YXMgaW5jb3JyZWN0LCB0aGUgbnVtYmVyIG9mIHJldHJpZXMKKwkgKiBtYXkgaGF2ZSBleHBpcmVk IGFuZCBhIGRpZmZlcmVudCBwYXNzd29yZCBpcyBiZWluZyByZXF1ZXN0ZWQgbm93LgorCSAqIElm IGl0IHdhcyBjb3JyZWN0LCBwb3NzaWJseSBwcm9jZWVkIHdpdGggU0lNIGluaXRpYWxpc2F0aW9u LgorCSAqLworCXNpbV9waW5fY2hlY2soc2ltKTsKK30KKworc3RhdGljIERCdXNNZXNzYWdlICpz aW1fc2VuZF9waW4oREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csCisJCQkJ CXZvaWQgKmRhdGEpCit7CisJc3RydWN0IG9mb25vX3NpbSAqc2ltID0gZGF0YTsKKwlEQnVzTWVz c2FnZUl0ZXIgaXRlcjsKKwljb25zdCBjaGFyICpwaW47CisKKwlpZiAoIXNpbS0+ZHJpdmVyLT5z ZW5kX3Bhc3N3ZCkKKwkJcmV0dXJuIF9fb2Zvbm9fZXJyb3Jfbm90X2ltcGxlbWVudGVkKG1zZyk7 CisKKwlpZiAoc2ltLT5wZW5kaW5nKQorCQlyZXR1cm4gX19vZm9ub19lcnJvcl9idXN5KG1zZyk7 CisKKwlpZiAoIWRidXNfbWVzc2FnZV9pdGVyX2luaXQobXNnLCAmaXRlcikpCisJCXJldHVybiBf X29mb25vX2Vycm9yX2ludmFsaWRfYXJncyhtc2cpOworCisJaWYgKGRidXNfbWVzc2FnZV9pdGVy X2dldF9hcmdfdHlwZSgmaXRlcikgIT0gREJVU19UWVBFX1NUUklORykKKwkJcmV0dXJuIF9fb2Zv bm9fZXJyb3JfaW52YWxpZF9hcmdzKG1zZyk7CisKKwlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFz aWMoJml0ZXIsICZwaW4pOworCisJaWYgKCFpc192YWxpZF9waW4ocGluKSkKKwkJcmV0dXJuIF9f b2Zvbm9fZXJyb3JfaW52YWxpZF9mb3JtYXQobXNnKTsKKworCXNpbS0+cGVuZGluZyA9IGRidXNf bWVzc2FnZV9yZWYobXNnKTsKKwlzaW0tPmRyaXZlci0+c2VuZF9wYXNzd2Qoc2ltLCBwaW4sIHNp bV9zZW5kX3Bpbl9jYiwgc2ltKTsKKworCXJldHVybiBOVUxMOworfQorCiBzdGF0aWMgR0RCdXNN ZXRob2RUYWJsZSBzaW1fbWV0aG9kc1tdID0gewogCXsgIkdldFByb3BlcnRpZXMiLAkiIiwJImF7 c3Z9IiwJc2ltX2dldF9wcm9wZXJ0aWVzCX0sCiAJeyAiU2V0UHJvcGVydHkiLAkic3YiLAkiIiwJ CXNpbV9zZXRfcHJvcGVydHksCiAJCQkJCQkJR19EQlVTX01FVEhPRF9GTEFHX0FTWU5DIH0sCisJ eyAiU2VuZFBJTiIsCSJzIiwJIiIsCQkJc2ltX3NlbmRfcGluLAorCQkJCQkJCUdfREJVU19NRVRI T0RfRkxBR19BU1lOQyB9LAogCXsgfQogfTsKIApAQCAtNjEyLDYgKzY4NSw2NyBAQCBzdGF0aWMg dm9pZCBzaW1fcmV0cmlldmVfaW1zaShzdHJ1Y3Qgb2Zvbm9fc2ltICpzaW0pCiAJc2ltLT5kcml2 ZXItPnJlYWRfaW1zaShzaW0sIHNpbV9pbXNpX2NiLCBzaW0pOwogfQogCitzdGF0aWMgdm9pZCBz aW1fcGluX2NoZWNrX2RvbmUoc3RydWN0IG9mb25vX3NpbSAqc2ltKQoreworCURCdXNDb25uZWN0 aW9uICpjb25uID0gb2Zvbm9fZGJ1c19nZXRfY29ubmVjdGlvbigpOworCWNvbnN0IGNoYXIgKnBh dGggPSBfX29mb25vX2F0b21fZ2V0X3BhdGgoc2ltLT5hdG9tKTsKKwlkYnVzX2Jvb2xfdCB2YWx1 ZSA9IEZBTFNFOworCisJaWYgKHNpbS0+cGluX3JlYWR5ID09IEZBTFNFKSB7CisJCXNpbS0+cGlu X3JlYWR5ID0gVFJVRTsKKworCQlvZm9ub19kYnVzX3NpZ25hbF9wcm9wZXJ0eV9jaGFuZ2VkKGNv bm4sIHBhdGgsCisJCQkJCQkJU0lNX01BTkFHRVJfSU5URVJGQUNFLAorCQkJCQkJCSJXYWl0aW5n Rm9yUElOIiwKKwkJCQkJCQlEQlVTX1RZUEVfQk9PTEVBTiwKKwkJCQkJCQkmdmFsdWUpOworCX0K KworCXNpbV9yZXRyaWV2ZV9pbXNpKHNpbSk7Cit9CisKK3N0YXRpYyB2b2lkIHNpbV9waW5fcXVl cnlfY2IoY29uc3Qgc3RydWN0IG9mb25vX2Vycm9yICplcnJvciwgaW50IHBpbl90eXBlLAorCQl2 b2lkICpkYXRhKQoreworCXN0cnVjdCBvZm9ub19zaW0gKnNpbSA9IGRhdGE7CisJREJ1c0Nvbm5l Y3Rpb24gKmNvbm4gPSBvZm9ub19kYnVzX2dldF9jb25uZWN0aW9uKCk7CisJY29uc3QgY2hhciAq cGF0aCA9IF9fb2Zvbm9fYXRvbV9nZXRfcGF0aChzaW0tPmF0b20pOworCWNvbnN0IGNoYXIgKnBp bl9uYW1lOworCisJaWYgKGVycm9yLT50eXBlICE9IE9GT05PX0VSUk9SX1RZUEVfTk9fRVJST1Ip IHsKKwkJb2Zvbm9fZXJyb3IoIlF1ZXJyeWluZyBQSU4gYXV0aGVudGljYXRpb24gc3RhdGUgZmFp bGVkIik7CisKKwkJc2ltX3Bpbl9jaGVja19kb25lKHNpbSk7CisJCXJldHVybjsKKwl9CisKKwlp ZiAoc2ltLT5waW5fdHlwZSAhPSBwaW5fdHlwZSkgeworCQlzaW0tPnBpbl90eXBlID0gcGluX3R5 cGU7CisJCXBpbl9uYW1lID0gc2ltX3Bhc3N3ZF9uYW1lKHBpbl90eXBlKTsKKworCQlvZm9ub19k YnVzX3NpZ25hbF9wcm9wZXJ0eV9jaGFuZ2VkKGNvbm4sIHBhdGgsCisJCQkJCQkJU0lNX01BTkFH RVJfSU5URVJGQUNFLAorCQkJCQkJCSJQSU5UeXBlUmVxdWlyZWQiLAorCQkJCQkJCURCVVNfVFlQ RV9TVFJJTkcsCisJCQkJCQkJJnBpbl9uYW1lKTsKKwl9CisKKwlpZiAocGluX3R5cGUgPT0gT0ZP Tk9fUEFTU1dEX05PTkUpCisJCXNpbV9waW5fY2hlY2tfZG9uZShzaW0pOworfQorCitzdGF0aWMg dm9pZCBzaW1fcGluX2NoZWNrKHN0cnVjdCBvZm9ub19zaW0gKnNpbSkKK3sKKwlpZiAoIXNpbS0+ ZHJpdmVyLT5xdWVyeV9wYXNzd2Rfc3RhdGUpIHsKKwkJc2ltX3Bpbl9jaGVja19kb25lKHNpbSk7 CisJCXJldHVybjsKKwl9CisKKwlzaW0tPnBpbl9yZWFkeSA9IEZBTFNFOworCisJc2ltLT5kcml2 ZXItPnF1ZXJ5X3Bhc3N3ZF9zdGF0ZShzaW0sIHNpbV9waW5fcXVlcnlfY2IsIHNpbSk7Cit9CisK IHN0YXRpYyB2b2lkIHNpbV9vcF9lcnJvcihzdHJ1Y3Qgb2Zvbm9fc2ltICpzaW0pCiB7CiAJc3Ry dWN0IHNpbV9maWxlX29wICpvcCA9IGdfcXVldWVfcG9wX2hlYWQoc2ltLT5zaW1vcF9xKTsKQEAg LTEzMTIsNyArMTQ0Niw3IEBAIHZvaWQgb2Zvbm9fc2ltX3JlZ2lzdGVyKHN0cnVjdCBvZm9ub19z aW0gKnNpbSkKIAkgKiBhcmJpdHJhcnkgZmlsZXMgdG8gYmUgd3JpdHRlbiBvciByZWFkLCBhc3N1 bWluZyB0aGVpciBwcmVzZW5jZQogCSAqIGluIHRoZSBFRnVzdAogCSAqLwotCXNpbV9yZXRyaWV2 ZV9pbXNpKHNpbSk7CisJc2ltX3Bpbl9jaGVjayhzaW0pOwogfQogCiB2b2lkIG9mb25vX3NpbV9y ZW1vdmUoc3RydWN0IG9mb25vX3NpbSAqc2ltKQpkaWZmIC0tZ2l0IGEvc3JjL3NpbXV0aWwuYyBi L3NyYy9zaW11dGlsLmMKaW5kZXggYjgwZTAxNC4uMmIyNjcwMCAxMDA2NDQKLS0tIGEvc3JjL3Np bXV0aWwuYworKysgYi9zcmMvc2ltdXRpbC5jCkBAIC00ODgsMyArNDg4LDI3IEBAIHZvaWQgc2lt X2Fkbl9idWlsZCh1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgbGVuZ3RoLAogCS8qIEV4dDEgdW51 c2VkICovCiAJKmRhdGErKyA9IDB4ZmY7CiB9CisKK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBw YXNzd2RfbmFtZVtdID0geworCVtPRk9OT19QQVNTV0RfTk9ORV0gPSAiTm9uZSIsCisJW09GT05P X1BBU1NXRF9TSU1fUElOXSA9ICJTSU0gUElOIiwKKwlbT0ZPTk9fUEFTU1dEX1NJTV9QVUtdID0g IlNJTSBQVUsiLAorCVtPRk9OT19QQVNTV0RfUEhTSU1fUElOXSA9ICJQSC1TSU0gUElOIiwKKwlb T0ZPTk9fUEFTU1dEX1BIRlNJTV9QSU5dID0gIlBILUZTSU0gUElOIiwKKwlbT0ZPTk9fUEFTU1dE X1BIRlNJTV9QVUtdID0gIlBILUZTSU0gUFVLIiwKKwlbT0ZPTk9fUEFTU1dEX1NJTV9QSU4yXSA9 ICJTSU0gUElOMiIsCisJW09GT05PX1BBU1NXRF9TSU1fUFVLMl0gPSAiU0lNIFBVSzIiLAorCVtP Rk9OT19QQVNTV0RfUEhORVRfUElOXSA9ICJQSC1ORVQgUElOIiwKKwlbT0ZPTk9fUEFTU1dEX1BI TkVUX1BVS10gPSAiUEgtTkVUIFBVSyIsCisJW09GT05PX1BBU1NXRF9QSE5FVFNVQl9QSU5dID0g IlBILU5FVFNVQiBQSU4iLAorCVtPRk9OT19QQVNTV0RfUEhORVRTVUJfUFVLXSA9ICJQSC1ORVRT VUIgUFVLIiwKKwlbT0ZPTk9fUEFTU1dEX1BIU1BfUElOXSA9ICJQSC1TUCBQSU4iLAorCVtPRk9O T19QQVNTV0RfUEhTUF9QVUtdID0gIlBILVNQIFBVSyIsCisJW09GT05PX1BBU1NXRF9QSENPUlBf UElOXSA9ICJQSC1DT1JQIFBJTiIsCisJW09GT05PX1BBU1NXRF9QSENPUlBfUFVLXSA9ICJQSC1D T1JQIFBVSyIsCit9OworCitjb25zdCBjaGFyICpzaW1fcGFzc3dkX25hbWUoZW51bSBvZm9ub19z aW1fcGFzc3dkX3R5cGUgdHlwZSkKK3sKKwlyZXR1cm4gcGFzc3dkX25hbWVbdHlwZV07Cit9CmRp ZmYgLS1naXQgYS9zcmMvc2ltdXRpbC5oIGIvc3JjL3NpbXV0aWwuaAppbmRleCBkZTNlNTVlLi5m YzRmMDYzIDEwMDY0NAotLS0gYS9zcmMvc2ltdXRpbC5oCisrKyBiL3NyYy9zaW11dGlsLmgKQEAg LTg4LDMgKzg4LDUgQEAgZ2Jvb2xlYW4gc2ltX2Fkbl9wYXJzZShjb25zdCB1bnNpZ25lZCBjaGFy ICpkYXRhLCBpbnQgbGVuZ3RoLAogdm9pZCBzaW1fYWRuX2J1aWxkKHVuc2lnbmVkIGNoYXIgKmRh dGEsIGludCBsZW5ndGgsCiAJCQljb25zdCBzdHJ1Y3Qgb2Zvbm9fcGhvbmVfbnVtYmVyICpwaCwK IAkJCWNvbnN0IGNoYXIgKmlkZW50aWZpZXIpOworCitjb25zdCBjaGFyICpzaW1fcGFzc3dkX25h bWUoZW51bSBvZm9ub19zaW1fcGFzc3dkX3R5cGUgdHlwZSk7Ci0tIAoxLjYuMQoK --===============1688978641784089744==--