--------------Boundary-00=_9VN95SOBJV156645A72R Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Subject:
Henning Meier-Geinitz, Mittwoch, 20. März 2002 00:00: ... > That doesn't mean that I don't find bugs but they are located in the > backends not in tst-backend currently. I'm looking into the net > backend and wire code currently. Lots of pleasure... While you're working on the net backend, could you please take a look at the following problem ? It was introduced by a patch to solve the endianness problems, which I send to the list last year and which you applied, after no one complaint. This code will blow up, if e.g. a frontend requests only one byte or if calling read() (in sane_read()) results in nread == 1. In this case, the frontend/net backend will hang forever. If you don't have a better solution already, please review the attached patch. To make testing a little easier, the patched net backend reads the environment variable SANE_FORCE_WRONG_ENDIANNESS. If you set it, you can test byte-swapping also, if server/client have the same byte order. To test scanning "one byte at a time", either hack the frontend, or uncomment the line /* max_length = 1;*/ in sane_read(). Michael --------------Boundary-00=_9VN95SOBJV156645A72R Content-Type: text/x-diff; charset="iso-8859-1"; name="net.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net.patch" LS0tIG5ldC5jCVN1biBKYW4gIDYgMjI6MzI6NTcgMjAwMgorKysgbmV0LW1oLmMJV2VkIE1hciAy MCAxMDozODo0OSAyMDAyCkBAIC00MCw3ICs0MCw3IEBACiAKICAgIFRoaXMgZmlsZSBpbXBsZW1l bnRzIGEgU0FORSBuZXR3b3JrLWJhc2VkIG1ldGEgYmFja2VuZC4gICovCiAKLS8qIFBsZWFzZSBp bmNyZWFzZSB2ZXJzaW9uIG51bWJlciB3aXRoIGV2ZXJ5IGNoYW5nZSAKKy8qIFBsZWFzZSBpbmNy ZWFzZSB2ZXJzaW9uIG51bWJlciB3aXRoIGV2ZXJ5IGNoYW5nZQogICAgKGRvbid0IGZvcmdldCB0 byB1cGRhdGUgbmV0LmRlc2MpICovCiAjZGVmaW5lIE5FVF9WRVJTSU9OICIxLjAuNiIKIApAQCAt OTEsOCArOTEsMjUgQEAKIHN0YXRpYyBpbnQgY2xpZW50X2JpZ19lbmRpYW47IC8qIDEgPT0gYmln IGVuZGlhbjsgMCA9PSBsaXR0bGUgZW5kaWFuICovCiBzdGF0aWMgaW50IHNlcnZlcl9iaWdfZW5k aWFuOyAvKiAxID09IGJpZyBlbmRpYW47IDAgPT0gbGl0dGxlIGVuZGlhbiAqLwogc3RhdGljIGlu dCBkZXB0aDsgLyogYml0cyBwZXIgcGl4ZWwgKi8KLXN0YXRpYyBpbnQgaGFuZ19vdmVyOyAvKiAt MSA9PSBubyBoYW5nb3Zlcjsgb3RoZXJ3aXNlIGNhc3QgdmFsdWUgdG8gCi0gICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLworLypUaGlzIHZhcmlhYmxlIGlzIG9ubHkgbmVl ZGVkLCBpZiB0aGUgZGVwdGggaXMgMTZiaXQvY2hhbm5lbCBhbmQgY2xpZW50L3NldmVyCitoYXZl IGRpZmZlcmVudCBlbmRpYW5uZXNzLgorQSB2YWx1ZSBvZiAtMSBtZWFucywgdGhhdCB0aGVyZSdz IG5vIGhhbmcgb3Zlcjsgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBoYXMgdG8gYmUKK2Nhc3RlZCB0byBT QU5FX0J5dGUuCitoYW5nX292ZXIgbWVhbnMsIHRoYXQgdGhlcmUgaXMgYSByZW1haW5pbmcgYnl0 ZSBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byBzYW5lX3JlYWQsCit3aGljaCBjb3VsZCBub3QgYmUg Ynl0ZS1zd2FwcGVkLCBlLmcuIGJlY2F1c2UgdGhlIGZyb250ZW5kIHJlcXVlc3RlZCAgYW4gb2Rk CitudW1iZXIgb2YgYnl0ZXMuKi8KKworc3RhdGljIGludCBoYW5nX292ZXI7CisKKy8qVGhpcyB2 YXJpYWJsZSBpcyBvbmx5IG5lZWRlZCwgaWYgdGhlIGRlcHRoIGlzIDE2Yml0L2NoYW5uZWwgYW5k IGNsaWVudC9zZXZlcgoraGF2ZSBkaWZmZXJlbnQgZW5kaWFubmVzcy4KK0EgdmFsdWUgb2YgLTEg bWVhbnMsIHRoYXQgdGhlcmUncyBubyBsZWZ0IG92ZXI7IG90aGVyd2lzZSB0aGUgdmFsdWUgaGFz IHRvIGJlCitjYXN0ZWQgdG8gU0FORV9CeXRlLgorbGVmdF9vdmVyIG1lYW5zLCB0aGF0IHRoZXJl IGlzIGEgcmVtYWluaW5nIGJ5dGUgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8gc2FuZV9yZWFkLAor d2hpY2ggYWxyZWFkeSBpcyBpbiB0aGUgdGhlIGNvcnJlY3QgYnl0ZSBvcmRlciwgYnV0IGNvdWxk IG5vdCBiZSByZXR1cm5lZCwgZS5nLgorYmVjYXVzZSB0aGUgZnJvbnRlbmQgcmVxdWVzdGVkIG9u bHkgb25lIGJ5dGUgcGVyIGNhbGwuKi8KKworc3RhdGljIGludCBsZWZ0X292ZXI7CiAKIHN0YXRp YyBTQU5FX1N0YXR1cwogYWRkX2RldmljZSAoY29uc3QgY2hhciAqbmFtZSwgTmV0X0RldmljZSAq KiBuZHApCkBAIC0xMDY1LDYgKzEwODIsNyBAQAogU0FORV9TdGF0dXMKIHNhbmVfc3RhcnQgKFNB TkVfSGFuZGxlIGhhbmRsZSkKIHsKKyAgY29uc3QgY2hhciAqZW52X2VuZGlhbiA9IE5VTEw7CiAg IE5ldF9TY2FubmVyICpzID0gaGFuZGxlOwogICBTQU5FX1N0YXJ0X1JlcGx5IHJlcGx5OwogICBz dHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwpAQCAtMTA3Nyw2ICsxMDk1LDcgQEAKICAgREJHICgzLCAi c2FuZV9zdGFydFxuIik7CiAKICAgaGFuZ19vdmVyID0gLTE7CisgIGxlZnRfb3ZlciA9IC0xOwog CiAgIGlmIChzLT5kYXRhID49IDApCiAgICAgewpAQCAtMTExOSw2ICsxMTM4LDE3IEBACiAJICBz ZXJ2ZXJfYmlnX2VuZGlhbiA9IDE7CiAJICBEQkcgKDEsICJzYW5lX3N0YXJ0OiBzZXJ2ZXIgaGFz IGJpZyBlbmRpYW4gYnl0ZSBvcmRlclxuIik7CiAJfQorICAgICAgLypIQUNLOiBUcnkgdG8gcmVh ZCBlbnYgdmFyaWFibGU7IHRoaXMgaXMgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seQorICAgICAg ICBzZXR0aW5nIFNBTkVfRk9SQ0VfV1JPTkdfRU5ESUFOTkVTUyBmb3JjZXMgdGhlIG5ldCBiYWNr ZW5kIHRvIHN3YXAKKwlieXRlcyBpbiAxNmJpdC9jaGFubmVsIG1vZGVzKi8KKyAgICAgIGVudl9l bmRpYW4gPSBnZXRlbnYgKCJTQU5FX0ZPUkNFX1dST05HX0VORElBTk5FU1MiKTsKKyAgICAgIGlm KGVudl9lbmRpYW4pCisgICAgICB7CisgICAgICAgIGlmKGNsaWVudF9iaWdfZW5kaWFuID09IDEp CisJICBzZXJ2ZXJfYmlnX2VuZGlhbiA9IDA7CisJZWxzZQorCSAgc2VydmVyX2JpZ19lbmRpYW4g PSAxOworICAgICAgfQogICAgICAgbmVlZF9hdXRoID0gKHJlcGx5LnJlc291cmNlX3RvX2F1dGhv cml6ZSAhPSAwKTsKICAgICAgIGlmIChuZWVkX2F1dGgpCiAJewpAQCAtMTE3Miw5ICsxMjAyLDE2 IEBACiAgIE5ldF9TY2FubmVyICpzID0gaGFuZGxlOwogICBzc2l6ZV90IG5yZWFkOwogICBTQU5F X0ludCBjbnQ7CisgIFNBTkVfSW50IHN0YXJ0X2NudDsKKyAgU0FORV9JbnQgZW5kX2NudDsKICAg U0FORV9CeXRlIHN3YXBfYnVmOwotCi0gIERCRyAoMywgInNhbmVfcmVhZDogbWF4X2xlbmd0aCA9 ICVkXG4iLCBtYXhfbGVuZ3RoKTsKKyAgU0FORV9CeXRlIHRlbXBfaGFuZ19vdmVyOworICBpbnQg aXNfZXZlbjsKKyAgaXNfZXZlbiA9IDE7CisvKiB1bmNvbW1lbnQgdG8gZm9yY2Ugb25lIGJ5dGUg cGVyIGNhbGwgKi8KKy8qIHRoaXMgd2lsbCBiZSB2ZXJ5IHNsb3chICovCisvKiBtYXhfbGVuZ3Ro ID0gMTsqLworICBEQkcgKDMsICJcblxuc2FuZV9yZWFkOiBtYXhfbGVuZ3RoID0gJWRcbiIsIG1h eF9sZW5ndGgpOwogCiAgIGlmICghbGVuZ3RoKQogICAgIHsKQEAgLTExODQsNiArMTIyMSwyMiBA QAogCiAgICpsZW5ndGggPSAwOwogCisgIC8qSWYgdGhlcmUncyBhIGxlZnQgb3ZlciwgaS5lLiBh IGJ5dGUgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBieXRlIG9yZGVyLCByZXR1cm4KKyAgICBpdCBp bW1lZGlhdGVseTsgb3RoZXJ3aXNlIHJlYWQgbWF5IGZhaWwgd2l0aCBhIFNBTkVfU1RBVFVTX0VP RiBhbmQgdGhlIGNhbGxlcgorICAgIG5ldmVyIGNhbiByZWFkIHRoZSBsYXN0IGJ5dGUgKi8KKyAg aWYgKChkZXB0aCA9PSAxNikgJiYgKHNlcnZlcl9iaWdfZW5kaWFuICE9IGNsaWVudF9iaWdfZW5k aWFuKSkKKyAgeworICAgIGlmKGxlZnRfb3ZlciA+IC0xKQorICAgIHsKKyAgICAgIERCRyAoMSwi c2FuZV9yZWFkOiBsZWZ0X292ZXIgZnJvbSBwcmV2aW91cyBjYWxsLCByZXR1cm4gaW1tZWRpYXRl bHlcbiIpOworICAgICAgLypyZXR1cm4gdGhlIGJ5dGUsIHdlJ3ZlIGN1cnJlbnRseSBzY2FubmVk OyBoYW5nX292ZXIgYmVjb21lcyBsZWZ0X292ZXIqLworICAgICAgKmRhdGEgPSAoU0FORV9CeXRl KSBsZWZ0X292ZXI7CisgICAgICBsZWZ0X292ZXIgPSAtMTsKKyAgICAgICpsZW5ndGggPSAxOwor ICAgICAgcmV0dXJuIFNBTkVfU1RBVFVTX0dPT0Q7CisgICAgfQorICB9CisKICAgaWYgKHMtPmRh dGEgPCAwKQogICAgIHsKICAgICAgIERCRyAoMSwgInNhbmVfcmVhZDogZGF0YSBwaXBlIGRvZXNu J3QgZXhpc3QsIHNjYW4gY2FuY2VsbGVkP1xuIik7CkBAIC0xMjUzLDQ0ICsxMzA2LDggQEAKICAg aWYgKG1heF9sZW5ndGggPiAoU0FORV9JbnQpIHMtPmJ5dGVzX3JlbWFpbmluZykKICAgICBtYXhf bGVuZ3RoID0gcy0+Ynl0ZXNfcmVtYWluaW5nOwogCi0gIC8qIElmIHdlIGFyZSBzY2FubmluZyB3 aXRoIDE2IGJpdHMvcGl4ZWwsIHdlIG11c3QgYmUgc3VyZSB0byBzY2FuIGNvbXBsZXRlCi0gICAg IHBpeGVscy4gT3RoZXJ3aXNlIGl0J3MgaW1wb3NzaWJsZSB0byBzd2FwIHRoZSBieXRlcywgc2lu Y2Ugd2UgZG9uJ3QgaGF2ZQotICAgICBhY2Nlc3MgdG8gdGhlIHByZXZpb3VzIGRhdGEgaWYgc2Fu ZV9yZWFkIGlzIGNhbGxlZCB0aGUgbmV4dAotICAgICB0aW1lLiBUaGVyZWZvcmUgd2UgY2hlY2ss IHdoZXRoZXIgYW4gb2RkIG51bWJlciBvYiBieXRlcyB3YXMgcmVhZC4gSWYKLSAgICAgdGhpcyBp cyB0cnVlLCB0aGUgbGFzdCBieXRlIGlzIHN0b3JlZCBpbiBoYW5nX292ZXIgYW5kIGxlbmd0aCBp cwotICAgICBkZWNyZWFzZWQgYnkgMS4KLSAgKi8KLQotICAvKiBDaGVjayB3aGV0aGVyIHdlIGFy ZSBzY2FubmluZyB3aXRoIGEgZGVwdGggb2YgMTYgYml0cy9waXhlbCBhbmQgd2hldGhlcgotICAg ICBzZXJ2ZXIgYW5kIGNsaWVudCBoYXZlIGRpZmZlcmVudCBieXRlIG9yZGVyLiBJZiB0aGlzIGlz IHRydWUsIHRoZW4gaXQncwotICAgICBuZWNjZXNzYXJ5IHRvIGNoZWNrIHdoZXRoZXIgdGhlcmUn cyBhIGhhbmdfb3ZlciBmcm9tIGEgcHJldmlvdXMgY2FsbCB0bwotICAgICBzYW5lX3JlYWQuCi0g ICovCi0KLSAgaWYgKChkZXB0aCA9PSAxNikgJiYgKHNlcnZlcl9iaWdfZW5kaWFuICE9IGNsaWVu dF9iaWdfZW5kaWFuKSkKLSAgICB7Ci0gICAgICBEQkcgKDQsICJzYW5lX3JlYWQ6IGNsaWVudC9z ZXJ2ZXIgaGF2ZSBkaWZmZXJlbnQgYnl0ZSBvcmRlclxuIik7Ci0gICAgICAKLSAgICAgIGlmICho YW5nX292ZXIgPiAtMSkKLQl7Ci0JICBEQkcgKDQsICJzYW5lX3JlYWQ6IGhhbmdfb3ZlciBmcm9t IHByZXZpb3VzIGNhbGwgdG8gc2FuZV9yZWFkKClcbiIpOwotCSAgKihkYXRhKSA9ICh1bnNpZ25l ZCBjaGFyKSBoYW5nX292ZXI7Ci0JICBEQkcgKDQsICJzYW5lX3JlYWQ6IHJlYWRpbmcgaW1hZ2Ug ZGF0YSBub3dcbiIpOwotCSAgbnJlYWQgPSByZWFkIChzLT5kYXRhLCBkYXRhICsgMSwgbWF4X2xl bmd0aCAtIDEpOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBEQkcgKDQsICJzYW5lX3JlYWQ6IG5v IGhhbmdfb3ZlciBmcm9tIHByZXZpb3VzIGNhbGwgdG8gIgotCSAgICAgICAic2FuZV9yZWFkKClc biIpOwotCSAgREJHICg0LCAic2FuZV9yZWFkOiByZWFkaW5nIGltYWdlIGRhdGEgbm93XG4iKTsK LQkgIG5yZWFkID0gcmVhZCAocy0+ZGF0YSwgZGF0YSwgbWF4X2xlbmd0aCk7Ci0JfQotICAgIH0K LSAgZWxzZQotICAgIHsKLSAgICAgIERCRyAoNCwgInNhbmVfcmVhZDogcmVhZGluZyBpbWFnZSBk YXRhIG5vd1xuIik7Ci0gICAgICBucmVhZCA9IHJlYWQgKHMtPmRhdGEsIGRhdGEsIG1heF9sZW5n dGgpOwotICAgIH0KKyAgICBucmVhZCA9IHJlYWQgKHMtPmRhdGEsIGRhdGEsIG1heF9sZW5ndGgp OworICAgIHMtPmJ5dGVzX3JlbWFpbmluZyAtPSBucmVhZDsKIAogICBpZiAobnJlYWQgPCAwKQog ICAgIHsKQEAgLTEzMDUsMzkgKzEzMjIsODkgQEAKIAl9CiAgICAgfQogCisgICpsZW5ndGggPSBu cmVhZDsKICAgLyogQ2hlY2sgd2hldGhlciB3ZSBhcmUgc2Nhbm5pbmcgd2l0aCBhIGRlcHRoIG9m IDE2IGJpdHMvcGl4ZWwgYW5kIHdoZXRoZXIKICAgICAgc2VydmVyIGFuZCBjbGllbnQgaGF2ZSBk aWZmZXJlbnQgYnl0ZSBvcmRlci4gSWYgdGhpcyBpcyB0cnVlLCB0aGVuIGl0J3MKICAgICAgbmVj Y2Vzc2FyeSB0byBjaGVjayB3aGV0aGVyIHJlYWQgcmV0dXJuZWQgYW4gb2RkIG51bWJlci4gSWYg YW4gb2RkIG51bWJlcgogICAgICBoYXMgYmVlbiByZXR1cm5lZCwgd2UgbXVzdCBzYXZlIHRoZSBs YXN0IGJ5dGUuCiAgICovCiAgIGlmICgoZGVwdGggPT0gMTYpICYmIChzZXJ2ZXJfYmlnX2VuZGlh biAhPSBjbGllbnRfYmlnX2VuZGlhbikpCi0gICAgeworICB7CiAgICAgICBEQkcgKDEsInNhbmVf cmVhZDogY2xpZW50L3NlcnZlciBoYXZlIGRpZmZlcmVudCBieXRlIG9yZGVyOyAiCiAJICAgIm11 c3Qgc3dhcFxuIik7Ci0gICAgICBzLT5ieXRlc19yZW1haW5pbmcgLT0gbnJlYWQ7Ci0gICAgICBp ZiAoMCAhPSBucmVhZCAlIDIpCi0JewotCSAgREJHICgxLCAic2FuZV9yZWFkOiBudW1iZXIgb2Yg Ynl0ZXMgcmVhZCBpcyBvZGQ7IHN0b3JlIGhhbmdfb3ZlclxuIik7Ci0JICAqbGVuZ3RoID0gbnJl YWQgLSAxOwotCSAgaGFuZ19vdmVyID0gKihkYXRhICsgbnJlYWQpOwotCX0KKyAgICAgIC8qc3Bl Y2lhbCBjYXNlOiAxIGJ5dGUgc2Nhbm5lZCBhbmQgaGFuZ19vdmVyKi8KKyAgICAgIGlmKChucmVh ZCA9PSAxKSAgJiYgKGhhbmdfb3ZlciA+IC0xKSkKKyAgICAgIHsKKyAgICAgICAgLypyZXR1cm4g dGhlIGJ5dGUsIHdlJ3ZlIGN1cnJlbnRseSBzY2FubmVkOyBoYW5nX292ZXIgYmVjb21lcyBsZWZ0 X292ZXIqLworICAgICAgICBsZWZ0X292ZXIgPSBoYW5nX292ZXI7CisgICAgICAgIGhhbmdfb3Zl ciA9IC0xOworCXJldHVybiBTQU5FX1NUQVRVU19HT09EOworICAgICAgfQorICAgICAgLypjaGVj ayB3aGV0aGVyIGFuIGV2ZW4gb3IgYW4gb2RkIG51bWJlciBvZiBieXRlcyBoYXMgYmVlbiBzY2Fu bmVkKi8KKyAgICAgIGlmKChucmVhZCAlIDIpID09IDApCisgICAgICAgIGlzX2V2ZW4gPSAxOwog ICAgICAgZWxzZQotCXsKLQkgICpsZW5ndGggPSBucmVhZDsKKyAgICAgICAgaXNfZXZlbiA9IDA7 CisgICAgICAvKmNoZWNrLCB3aGV0aGVyIHRoZXJlJ3MgYSBoYW5nIG92ZXIgZnJvbSBhIHByZXZp b3VzIGNhbGw7CisgICAgICAgIGluIHRoaXMgY2FzZSB3ZSBtZW1jb3B5IHRoZSBkYXRhIHVwIG9u ZSBieXRlKi8KKyAgICAgIGlmKChucmVhZCA+IDEpICAmJiAoaGFuZ19vdmVyID4gLTEpKQorICAg ICAgeworICAgICAgICAvKiBzdG9yZSBsYXN0IGJ5dGUqLworCXRlbXBfaGFuZ19vdmVyID0gKihk YXRhICsgbnJlYWQgLTEpOworCW1lbWNvcHkoZGF0YSsxLGRhdGEsbnJlYWQtMSk7CisJKmRhdGEg PSAoU0FORV9CeXRlKSBoYW5nX292ZXI7CisgICAgICAgIC8qd2hhdCBoYXBwZW5zIHdpdGggdGhl IGxhc3QgYnl0ZSBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIG51bWJlciBvZiBieXRlcworCSAgaXMg ZXZlbiBvciBvZGQqLworICAgICAgICBpZihpc19ldmVuID09IDEpCisJeworCSAgLypudW1iZXIg b2YgYnl0ZXMgaXMgZXZlbjsgbm8gbmV3IGhhbmdfb3ZlciwgZXhjaGFuZ2UgbGFzdCBieXRlIHdp dGgKKwkgICAgaGFuZyBvdmVyOyBsYXN0IGJ5dGUgYmVjb21lcyBsZWZ0X292ZXIqLworCSAgbGVm dF9vdmVyID0gKihkYXRhICsgbnJlYWQgLTEpOworICAgICAgICAgICooZGF0YSArIG5yZWFkIC0x KSA9IHRlbXBfaGFuZ19vdmVyOwogCSAgaGFuZ19vdmVyID0gLTE7Ci0JfQotICAgICAgLyogRmlu YWxseSBzdGVwIHRocm91Z2ggdGhlIGJ1ZmZlciBhbmQgc3dhcCBieXRlcyAqLwotICAgICAgZm9y IChjbnQgPSAwOyBjbnQgPCAqbGVuZ3RoIC0gMTsgY250ICs9IDIpCi0JewotCSAgc3dhcF9idWYg PSAqKGRhdGEgK2NudCk7Ci0JICAqKGRhdGEgKyBjbnQpID0gKihkYXRhICsgY250ICsgMSk7Ci0J ICAqKGRhdGEgKyBjbnQgKyAxKSA9IHN3YXBfYnVmOwotCX0KLSAgICB9Ci0gIGVsc2UKLSAgICB7 Ci0gICAgICBzLT5ieXRlc19yZW1haW5pbmcgLT0gbnJlYWQ7Ci0gICAgICAqbGVuZ3RoID0gbnJl YWQ7CisgICAgICAgICAgc3RhcnRfY250ID0gMDsKKyAgICAgICAgICAvKmxhc3QgYnl0ZSBhbHJl YWR5IHN3YXBwZWQqLworCSAgZW5kX2NudCA9IG5yZWFkIC0gMjsKKwl9CisJZWxzZQorCXsKKwkg IC8qbnVtYmVyIG9mIGJ5dGVzIGlzIG9kZDsgbGFzdCBieXRlIGJlY29tZXMgbmV3IGhhbmdfb3Zl ciovCisJICBoYW5nX292ZXIgPSB0ZW1wX2hhbmdfb3ZlcjsKKyAgICAgICAgICBsZWZ0X292ZXIg PSAtMTsKKwkgIHN0YXJ0X2NudCA9IDA7CisJICBlbmRfY250ID0gbnJlYWQgLSAxOworCX0KKyAg ICAgIH0KKyAgICAgIGVsc2UgaWYobnJlYWQgPT0gMSkKKyAgICAgIHsKKyAgICAgICAgLyppZiBv bmx5IG9uZSBieXRlIGhhcyBiZWVuIHJlYWQsIHNhdmUgaXQgYXMgaGFuZ19vdmVyIGFuZCByZXR1 cm4gbGVuZ3RoID0wICovCisJaGFuZ19vdmVyID0gKGludCkgKmRhdGE7CisJKmxlbmd0aCA9IDA7 CisJcmV0dXJuIFNBTkVfU1RBVFVTX0dPT0Q7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7 CisgICAgICAgIC8qbm8gaGFuZ19vdmVyOyB0ZXN0IGZvciBldmVuIG9yIG9kZCBieXRlIG51bWJl ciAqLworCWlmKGlzX2V2ZW4gPT0gMSkKKwl7CisgICAgICAgICAgc3RhcnRfY250ID0gMDsKKwkg IGVuZF9jbnQgPSAqbGVuZ3RoOworCX0KKyAgICAgICAgZWxzZQorCXsKKyAgICAgICAgICBzdGFy dF9jbnQgPSAwOworCSAgaGFuZ19vdmVyID0gKihkYXRhICsgKmxlbmd0aCAtMSk7CisJICAqbGVu Z3RoIC09IDE7CisJICBlbmRfY250ID0gKmxlbmd0aDsKKwl9CisgICAgICB9CisgICAgICAvKnN3 YXAgdGhlIGJ5dGVzICovCisgICAgICBmb3IgKGNudCA9IHN0YXJ0X2NudDsgY250IDwgZW5kX2Nu dCAtIDE7IGNudCArPSAyKQorICAgICAgeworICAgICAgICBzd2FwX2J1ZiA9ICooZGF0YSArY250 KTsKKyAgICAgICAgKihkYXRhICsgY250KSA9ICooZGF0YSArIGNudCArIDEpOworICAgICAgICAq KGRhdGEgKyBjbnQgKyAxKSA9IHN3YXBfYnVmOworICAgICAgfQogICAgIH0KICAgREJHICgzLCAi c2FuZV9yZWFkOiAlZCBieXRlcyByZWFkLCAlZCByZW1haW5pbmdcbiIsIG5yZWFkLAogICAgICAg IHMtPmJ5dGVzX3JlbWFpbmluZyk7Cg== --------------Boundary-00=_9VN95SOBJV156645A72R--
