Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nWDmC-0004B2-RV for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Mar 2022 08:52:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nWDmA-0002k8-EU for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Mar 2022 08:52:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nWDm9-0002jy-N3 for pgsql-hackers@lists.postgresql.org; Mon, 21 Mar 2022 08:52:30 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nWDm6-00013t-RK for pgsql-hackers@lists.postgresql.org; Mon, 21 Mar 2022 08:52:28 +0000 Received: by mail-lf1-x133.google.com with SMTP id m3so11483007lfj.11 for ; Mon, 21 Mar 2022 01:52:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timescale.com; s=google; h=mime-version:from:date:message-id:subject:to:cc; bh=D+5ehVMtkcQpX/4DRgk/RyHHJOXB0P9zqMVJgg/UyxI=; b=VR1V/N5RiX97D38txXAmkrVU8c9a30PVVAKg33sb4tkWY0dMkAP0Xg2cjzqSvmMHZE PGNmqwc75fU/rHci5YlEhy4ueDbL4OmBWkOtl1FDcjtXe3YGc1wHFGshHdO0fvhYPA0q 0bSWoPAp/A2uPtlh+1xvcBOQJGZHC85xv0Ej0nuhSJnhzeld+ekdwgvo8hNnVKGatkLN +aMzT1pVAEekVQNc7GGLzawEaQ7nw0sxONkg3UjdCL/c8XzgJhDSR8+Mt7WWV2VrdCHR wUnVP5sjoo38+LefSpYJHX7XkXyLyJ5Y6nZBJQsYKRv1E0YwH4AHgGkL/rXrE1VDFTby Lsdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=D+5ehVMtkcQpX/4DRgk/RyHHJOXB0P9zqMVJgg/UyxI=; b=UDvqk3HM+kq/bjJ/dBWRlgzx5BmJc1auYvdqPhJTcwppWdZeSLgbq6sPGh9pUFJrxD YJomrvisXPnCOY3tURZz9eCYQWPTeIkWE/DogJ6A9o7K0p+rKDom3r0UV/iJi/ekMK9z bneumHRzd4oaRiDO1Icj04OQUEUPZKcAWWkQOEbb0ARrUOLo7Xu1KTTWDTO4ehksJOSG 61/Ds1mwyNWp8n9e4vziVcymFJRDxmpRlR3Rm2bGyZKj03PpuDd6m2cRjrcw/ZZQ10Mi Am72EkngH3gryQwdrt+gxUtqRy9/binaWKNuJLDQFAysE53oa/ZnAeNSR+Hesg+o7xdn IYdw== X-Gm-Message-State: AOAM533JnSLCXiZjeQ9xKOH49RHebT2Pq6bZ658rSmIRlVCMBv/rpa7v YyPN/0ZjqUuXA7Seh0KAfH+S9ZvXdhdIjebvyffd4DwfvUGQ+O2o X-Google-Smtp-Source: ABdhPJwF/cufngijAPHIYwWMTOs3kdtIAR7I9TzGchc7TorihC442U7R/y4V5o2dXeodnyv90vPZgDMpjVejeiQwfvc= X-Received: by 2002:a05:6512:308b:b0:448:92dd:c2c5 with SMTP id z11-20020a056512308b00b0044892ddc2c5mr14468963lfd.271.1647852745148; Mon, 21 Mar 2022 01:52:25 -0700 (PDT) MIME-Version: 1.0 From: Aleksander Alekseev Date: Mon, 21 Mar 2022 11:52:14 +0300 Message-ID: Subject: [PATCH] Remove workarounds to format [u]int64's To: PostgreSQL Hackers Cc: Tom Lane Content-Type: multipart/mixed; boundary="00000000000084890f05dab69d7c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000084890f05dab69d7c Content-Type: text/plain; charset="UTF-8" Hi hackers, I learned from Tom [1] that we can simplify the code like: ``` char buff[32]; snprintf(buf, sizeof(buf), INT64_FORMAT, ...) ereport(WARNING, (errmsg("%s ...", buf))); ``` ... and rely on %lld/%llu now as long as we explicitly cast the argument to long long int / unsigned long long. This was previously addressed in 6a1cd8b9 and d914eb34, but I see more places where we still use an old approach. Suggested patch fixes this. Tested locally - no warnings; passes all the tests. [1] https://www.postgresql.org/message-id/771048.1647528068%40sss.pgh.pa.us -- Best regards, Aleksander Alekseev --00000000000084890f05dab69d7c Content-Type: application/octet-stream; name="v1-0001-Remove-workarounds-to-format-u-int64-s.patch" Content-Disposition: attachment; filename="v1-0001-Remove-workarounds-to-format-u-int64-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l10gyezc0 RnJvbSAxNTJhOWI5ZThmMWVhYTliZDMxOWRhY2E3ZDFhZGZmMjgyYzBjMzIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpbWVz Y2FsZS5jb20+CkRhdGU6IE1vbiwgMjEgTWFyIDIwMjIgMTE6MDE6NTcgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxXSBSZW1vdmUgd29ya2Fyb3VuZHMgdG8gZm9ybWF0IFt1XWludDY0J3MKCk5vdyB0 aGF0IHdlIGFsd2F5cyB1c2Ugb3VyIG93biBzcHJpbnRmKCksIHdlIGNhbiByZWx5IG9uICVsbGQg YW5kICVsbHUgdG8gYmUKcG9ydGFibGUsIHNvIHdlIGNhbiB1c2UgdGhvc2UuIFRoaXMgcmVkdWNl cyB0aGUgY29kZSB2ZXJib3NpdHkuCgpBdXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtz YW5kZXJAdGltZXNjYWxlLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICB8IDI4ICsrKyst LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAgIHwgOTUgKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3hpZDhmdW5jcy5jIHwg IDUgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IGJhNzhlY2ZmNjYuLmM0NGI4MDc2MTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluLmMKQEAgLTEwMTgsMTEgKzEwMTgsOSBAQCBicmluX3N1bW1hcml6ZV9y YW5nZShQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKGhlYXBCbGs2NCA+IEJSSU5fQUxMX0JMT0NL UkFOR0VTIHx8IGhlYXBCbGs2NCA8IDApCiAJewotCQljaGFyCSAgICpibGsgPSBwc3ByaW50ZihJ TlQ2NF9GT1JNQVQsIGhlYXBCbGs2NCk7Ci0KIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKLQkJCQkgZXJybXNnKCJibG9j ayBudW1iZXIgb3V0IG9mIHJhbmdlOiAlcyIsIGJsaykpKTsKKwkJCQkgZXJybXNnKCJibG9jayBu dW1iZXIgb3V0IG9mIHJhbmdlOiAlbGxkIiwgKGxvbmcgbG9uZyBpbnQpaGVhcEJsazY0KSkpOwog CX0KIAloZWFwQmxrID0gKEJsb2NrTnVtYmVyKSBoZWFwQmxrNjQ7CiAKQEAgLTEwOTUsMTEgKzEw OTMsOSBAQCBicmluX2Rlc3VtbWFyaXplX3JhbmdlKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlpZiAo aGVhcEJsazY0ID4gTWF4QmxvY2tOdW1iZXIgfHwgaGVhcEJsazY0IDwgMCkKIAl7Ci0JCWNoYXIJ ICAgKmJsayA9IHBzcHJpbnRmKElOVDY0X0ZPUk1BVCwgaGVhcEJsazY0KTsKLQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0Up LAotCQkJCSBlcnJtc2coImJsb2NrIG51bWJlciBvdXQgb2YgcmFuZ2U6ICVzIiwgYmxrKSkpOwor CQkJCSBlcnJtc2coImJsb2NrIG51bWJlciBvdXQgb2YgcmFuZ2U6ICVsbGQiLCAobG9uZyBsb25n IGludCloZWFwQmxrNjQpKSk7CiAJfQogCWhlYXBCbGsgPSAoQmxvY2tOdW1iZXIpIGhlYXBCbGs2 NDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggN2IzZjVhODRiOC4uYmFiNDBjNDIwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xMTUsMjEgKzExNSwxNyBAQCB2b2lkCiBDb3B5 RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogewogCUNvcHlGcm9tU3RhdGUgY3N0YXRlID0g KENvcHlGcm9tU3RhdGUpIGFyZzsKLQljaGFyCQljdXJsaW5lbm9fc3RyWzMyXTsKLQotCXNucHJp bnRmKGN1cmxpbmVub19zdHIsIHNpemVvZihjdXJsaW5lbm9fc3RyKSwgVUlOVDY0X0ZPUk1BVCwK LQkJCSBjc3RhdGUtPmN1cl9saW5lbm8pOwogCiAJaWYgKGNzdGF0ZS0+b3B0cy5iaW5hcnkpCiAJ ewogCQkvKiBjYW4ndCB1c2VmdWxseSBkaXNwbGF5IHRoZSBkYXRhICovCiAJCWlmIChjc3RhdGUt PmN1cl9hdHRuYW1lKQotCQkJZXJyY29udGV4dCgiQ09QWSAlcywgbGluZSAlcywgY29sdW1uICVz IiwKLQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgY3VybGluZW5vX3N0ciwKKwkJCWVycmNv bnRleHQoIkNPUFkgJXMsIGxpbmUgJWxsdSwgY29sdW1uICVzIiwKKwkJCQkJICAgY3N0YXRlLT5j dXJfcmVsbmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyljc3RhdGUtPmN1cl9saW5lbm8sCiAJCQkJ CSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUpOwogCQllbHNlCi0JCQllcnJjb250ZXh0KCJDT1BZICVz LCBsaW5lICVzIiwKLQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgY3VybGluZW5vX3N0cik7 CisJCQllcnJjb250ZXh0KCJDT1BZICVzLCBsaW5lICVsbHUiLAorCQkJCQkgICBjc3RhdGUtPmN1 cl9yZWxuYW1lLCAodW5zaWduZWQgbG9uZyBsb25nKWNzdGF0ZS0+Y3VyX2xpbmVubyk7CiAJfQog CWVsc2UKIAl7CkBAIC0xMzksMTYgKzEzNSwxNiBAQCBDb3B5RnJvbUVycm9yQ2FsbGJhY2sodm9p ZCAqYXJnKQogCQkJY2hhcgkgICAqYXR0dmFsOwogCiAJCQlhdHR2YWwgPSBsaW1pdF9wcmludG91 dF9sZW5ndGgoY3N0YXRlLT5jdXJfYXR0dmFsKTsKLQkJCWVycmNvbnRleHQoIkNPUFkgJXMsIGxp bmUgJXMsIGNvbHVtbiAlczogXCIlc1wiIiwKLQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwg Y3VybGluZW5vX3N0ciwKKwkJCWVycmNvbnRleHQoIkNPUFkgJXMsIGxpbmUgJWxsdSwgY29sdW1u ICVzOiBcIiVzXCIiLAorCQkJCQkgICBjc3RhdGUtPmN1cl9yZWxuYW1lLCAodW5zaWduZWQgbG9u ZyBsb25nKWNzdGF0ZS0+Y3VyX2xpbmVubywKIAkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSwg YXR0dmFsKTsKIAkJCXBmcmVlKGF0dHZhbCk7CiAJCX0KIAkJZWxzZSBpZiAoY3N0YXRlLT5jdXJf YXR0bmFtZSkKIAkJewogCQkJLyogZXJyb3IgaXMgcmVsZXZhbnQgdG8gYSBwYXJ0aWN1bGFyIGNv bHVtbiwgdmFsdWUgaXMgTlVMTCAqLwotCQkJZXJyY29udGV4dCgiQ09QWSAlcywgbGluZSAlcywg Y29sdW1uICVzOiBudWxsIGlucHV0IiwKLQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgY3Vy bGluZW5vX3N0ciwKKwkJCWVycmNvbnRleHQoIkNPUFkgJXMsIGxpbmUgJWxsdSwgY29sdW1uICVz OiBudWxsIGlucHV0IiwKKwkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgKHVuc2lnbmVkIGxv bmcgbG9uZyljc3RhdGUtPmN1cl9saW5lbm8sCiAJCQkJCSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUp OwogCQl9CiAJCWVsc2UKQEAgLTE2MywxNCArMTU5LDE0IEBAIENvcHlGcm9tRXJyb3JDYWxsYmFj ayh2b2lkICphcmcpCiAJCQkJY2hhcgkgICAqbGluZXZhbDsKIAogCQkJCWxpbmV2YWwgPSBsaW1p dF9wcmludG91dF9sZW5ndGgoY3N0YXRlLT5saW5lX2J1Zi5kYXRhKTsKLQkJCQllcnJjb250ZXh0 KCJDT1BZICVzLCBsaW5lICVzOiBcIiVzXCIiLAotCQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFt ZSwgY3VybGluZW5vX3N0ciwgbGluZXZhbCk7CisJCQkJZXJyY29udGV4dCgiQ09QWSAlcywgbGlu ZSAlbGx1OiBcIiVzXCIiLAorCQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgKHVuc2lnbmVk IGxvbmcgbG9uZyljc3RhdGUtPmN1cl9saW5lbm8sIGxpbmV2YWwpOwogCQkJCXBmcmVlKGxpbmV2 YWwpOwogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCWVycmNvbnRleHQoIkNPUFkgJXMsIGxpbmUg JXMiLAotCQkJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSwgY3VybGluZW5vX3N0cik7CisJCQkJ ZXJyY29udGV4dCgiQ09QWSAlcywgbGluZSAlbGx1IiwKKwkJCQkJCSAgIGNzdGF0ZS0+Y3VyX3Jl bG5hbWUsICh1bnNpZ25lZCBsb25nIGxvbmcpY3N0YXRlLT5jdXJfbGluZW5vKTsKIAkJCX0KIAkJ fQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmluZGV4IGFiNTkyY2UyZjEuLjhkYjg3NWMwMDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtNzA3LDEzICs3MDcsMTAgQEAgbmV4dHZhbF9p bnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVybWlzc2lvbnMpCiAJCQkJCWJyZWFrOwkJ Lyogc3RvcCBmZXRjaGluZyAqLwogCQkJCWlmICghY3ljbGUpCiAJCQkJewotCQkJCQljaGFyCQli dWZbMTAwXTsKLQotCQkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBJTlQ2NF9GT1JNQVQs IG1heHYpOwogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU0VR VUVOQ0VfR0VORVJBVE9SX0xJTUlUX0VYQ0VFREVEKSwKLQkJCQkJCQkgZXJybXNnKCJuZXh0dmFs OiByZWFjaGVkIG1heGltdW0gdmFsdWUgb2Ygc2VxdWVuY2UgXCIlc1wiICglcykiLAotCQkJCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxcmVsKSwgYnVmKSkpOworCQkJCQkJCSBlcnJt c2coIm5leHR2YWw6IHJlYWNoZWQgbWF4aW11bSB2YWx1ZSBvZiBzZXF1ZW5jZSBcIiVzXCIgKCVs bGQpIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXJlbCksIChsb25nIGxv bmcgaW50KW1heHYpKSk7CiAJCQkJfQogCQkJCW5leHQgPSBtaW52OwogCQkJfQpAQCAtNzMwLDEz ICs3MjcsMTAgQEAgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVybWlz c2lvbnMpCiAJCQkJCWJyZWFrOwkJLyogc3RvcCBmZXRjaGluZyAqLwogCQkJCWlmICghY3ljbGUp CiAJCQkJewotCQkJCQljaGFyCQlidWZbMTAwXTsKLQotCQkJCQlzbnByaW50ZihidWYsIHNpemVv ZihidWYpLCBJTlQ2NF9GT1JNQVQsIG1pbnYpOwogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfU0VRVUVOQ0VfR0VORVJBVE9SX0xJTUlUX0VYQ0VFREVEKSwKLQkJ CQkJCQkgZXJybXNnKCJuZXh0dmFsOiByZWFjaGVkIG1pbmltdW0gdmFsdWUgb2Ygc2VxdWVuY2Ug XCIlc1wiICglcykiLAotCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxcmVsKSwg YnVmKSkpOworCQkJCQkJCSBlcnJtc2coIm5leHR2YWw6IHJlYWNoZWQgbWluaW11bSB2YWx1ZSBv ZiBzZXF1ZW5jZSBcIiVzXCIgKCVsbGQpIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHNlcXJlbCksIChsb25nIGxvbmcgaW50KW1pbnYpKSk7CiAJCQkJfQogCQkJCW5leHQgPSBt YXh2OwogCQkJfQpAQCAtOTc2LDE4ICs5NzAsMTEgQEAgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50 NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCkKIAogCWlmICgobmV4dCA8IG1pbnYpIHx8IChuZXh0ID4g bWF4dikpCiAJewotCQljaGFyCQlidWZ2WzEwMF0sCi0JCQkJCWJ1Zm1bMTAwXSwKLQkJCQkJYnVm eFsxMDBdOwotCi0JCXNucHJpbnRmKGJ1ZnYsIHNpemVvZihidWZ2KSwgSU5UNjRfRk9STUFULCBu ZXh0KTsKLQkJc25wcmludGYoYnVmbSwgc2l6ZW9mKGJ1Zm0pLCBJTlQ2NF9GT1JNQVQsIG1pbnYp OwotCQlzbnByaW50ZihidWZ4LCBzaXplb2YoYnVmeCksIElOVDY0X0ZPUk1BVCwgbWF4dik7CiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9P Rl9SQU5HRSksCi0JCQkJIGVycm1zZygic2V0dmFsOiB2YWx1ZSAlcyBpcyBvdXQgb2YgYm91bmRz IGZvciBzZXF1ZW5jZSBcIiVzXCIgKCVzLi4lcykiLAotCQkJCQkJYnVmdiwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoc2VxcmVsKSwKLQkJCQkJCWJ1Zm0sIGJ1ZngpKSk7CisJCQkJIGVycm1zZygi c2V0dmFsOiB2YWx1ZSAlbGxkIGlzIG91dCBvZiBib3VuZHMgZm9yIHNlcXVlbmNlIFwiJXNcIiAo JWxsZC4uJWxsZCkiLAorCQkJCQkJKGxvbmcgbG9uZyBpbnQpbmV4dCwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoc2VxcmVsKSwKKwkJCQkJCShsb25nIGxvbmcgaW50KW1pbnYsIChsb25nIGxvbmcg aW50KW1heHYpKSk7CiAJfQogCiAJLyogU2V0IHRoZSBjdXJydmFsKCkgc3RhdGUgb25seSBpZiBp c2NhbGxlZCA9IHRydWUgKi8KQEAgLTE0NjksMTQgKzE0NTYsMTAgQEAgaW5pdF9wYXJhbXMoUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcHRpb25zLCBib29sIGZvcl9pZGVudGl0eSwKIAlpZiAo KHNlcWZvcm0tPnNlcXR5cGlkID09IElOVDJPSUQgJiYgKHNlcWZvcm0tPnNlcW1heCA8IFBHX0lO VDE2X01JTiB8fCBzZXFmb3JtLT5zZXFtYXggPiBQR19JTlQxNl9NQVgpKQogCQl8fCAoc2VxZm9y bS0+c2VxdHlwaWQgPT0gSU5UNE9JRCAmJiAoc2VxZm9ybS0+c2VxbWF4IDwgUEdfSU5UMzJfTUlO IHx8IHNlcWZvcm0tPnNlcW1heCA+IFBHX0lOVDMyX01BWCkpKQogCXsKLQkJY2hhcgkJYnVmeFsx MDBdOwotCi0JCXNucHJpbnRmKGJ1ZngsIHNpemVvZihidWZ4KSwgSU5UNjRfRk9STUFULCBzZXFm b3JtLT5zZXFtYXgpOwotCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiTUFYVkFMVUUgKCVzKSBpcyBv dXQgb2YgcmFuZ2UgZm9yIHNlcXVlbmNlIGRhdGEgdHlwZSAlcyIsCi0JCQkJCQlidWZ4LCBmb3Jt YXRfdHlwZV9iZShzZXFmb3JtLT5zZXF0eXBpZCkpKSk7CisJCQkJIGVycm1zZygiTUFYVkFMVUUg KCVsbGQpIGlzIG91dCBvZiByYW5nZSBmb3Igc2VxdWVuY2UgZGF0YSB0eXBlICVzIiwKKwkJCQkJ CShsb25nIGxvbmcgaW50KXNlcWZvcm0tPnNlcW1heCwgZm9ybWF0X3R5cGVfYmUoc2VxZm9ybS0+ c2VxdHlwaWQpKSkpOwogCX0KIAogCS8qIE1JTlZBTFVFIChudWxsIGFyZyBtZWFucyBOTyBNSU5W QUxVRSkgKi8KQEAgLTE1MDYsMjggKzE0ODksMTkgQEAgaW5pdF9wYXJhbXMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpvcHRpb25zLCBib29sIGZvcl9pZGVudGl0eSwKIAlpZiAoKHNlcWZvcm0t PnNlcXR5cGlkID09IElOVDJPSUQgJiYgKHNlcWZvcm0tPnNlcW1pbiA8IFBHX0lOVDE2X01JTiB8 fCBzZXFmb3JtLT5zZXFtaW4gPiBQR19JTlQxNl9NQVgpKQogCQl8fCAoc2VxZm9ybS0+c2VxdHlw aWQgPT0gSU5UNE9JRCAmJiAoc2VxZm9ybS0+c2VxbWluIDwgUEdfSU5UMzJfTUlOIHx8IHNlcWZv cm0tPnNlcW1pbiA+IFBHX0lOVDMyX01BWCkpKQogCXsKLQkJY2hhcgkJYnVmbVsxMDBdOwotCi0J CXNucHJpbnRmKGJ1Zm0sIHNpemVvZihidWZtKSwgSU5UNjRfRk9STUFULCBzZXFmb3JtLT5zZXFt aW4pOwotCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiTUlOVkFMVUUgKCVzKSBpcyBvdXQgb2YgcmFu Z2UgZm9yIHNlcXVlbmNlIGRhdGEgdHlwZSAlcyIsCi0JCQkJCQlidWZtLCBmb3JtYXRfdHlwZV9i ZShzZXFmb3JtLT5zZXF0eXBpZCkpKSk7CisJCQkJIGVycm1zZygiTUlOVkFMVUUgKCVsbGQpIGlz IG91dCBvZiByYW5nZSBmb3Igc2VxdWVuY2UgZGF0YSB0eXBlICVzIiwKKwkJCQkJCShsb25nIGxv bmcgaW50KXNlcWZvcm0tPnNlcW1pbiwgZm9ybWF0X3R5cGVfYmUoc2VxZm9ybS0+c2VxdHlwaWQp KSkpOwogCX0KIAogCS8qIGNyb3NzY2hlY2sgbWluL21heCAqLwogCWlmIChzZXFmb3JtLT5zZXFt aW4gPj0gc2VxZm9ybS0+c2VxbWF4KQogCXsKLQkJY2hhcgkJYnVmbVsxMDBdLAotCQkJCQlidWZ4 WzEwMF07Ci0KLQkJc25wcmludGYoYnVmbSwgc2l6ZW9mKGJ1Zm0pLCBJTlQ2NF9GT1JNQVQsIHNl cWZvcm0tPnNlcW1pbik7Ci0JCXNucHJpbnRmKGJ1ZngsIHNpemVvZihidWZ4KSwgSU5UNjRfRk9S TUFULCBzZXFmb3JtLT5zZXFtYXgpOwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coIk1JTlZBTFVFICgl cykgbXVzdCBiZSBsZXNzIHRoYW4gTUFYVkFMVUUgKCVzKSIsCi0JCQkJCQlidWZtLCBidWZ4KSkp OworCQkJCSBlcnJtc2coIk1JTlZBTFVFICglbGxkKSBtdXN0IGJlIGxlc3MgdGhhbiBNQVhWQUxV RSAoJWxsZCkiLAorCQkJCQkJKGxvbmcgbG9uZyBpbnQpc2VxZm9ybS0+c2VxbWluLCAobG9uZyBs b25nIGludClzZXFmb3JtLT5zZXFtYXgpKSk7CiAJfQogCiAJLyogU1RBUlQgV0lUSCAqLwpAQCAt MTU0NiwyNyArMTUyMCwxNyBAQCBpbml0X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km9wdGlvbnMsIGJvb2wgZm9yX2lkZW50aXR5LAogCS8qIGNyb3NzY2hlY2sgU1RBUlQgKi8KIAlp ZiAoc2VxZm9ybS0+c2Vxc3RhcnQgPCBzZXFmb3JtLT5zZXFtaW4pCiAJewotCQljaGFyCQlidWZz WzEwMF0sCi0JCQkJCWJ1Zm1bMTAwXTsKLQotCQlzbnByaW50ZihidWZzLCBzaXplb2YoYnVmcyks IElOVDY0X0ZPUk1BVCwgc2VxZm9ybS0+c2Vxc3RhcnQpOwotCQlzbnByaW50ZihidWZtLCBzaXpl b2YoYnVmbSksIElOVDY0X0ZPUk1BVCwgc2VxZm9ybS0+c2VxbWluKTsKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkg ZXJybXNnKCJTVEFSVCB2YWx1ZSAoJXMpIGNhbm5vdCBiZSBsZXNzIHRoYW4gTUlOVkFMVUUgKCVz KSIsCi0JCQkJCQlidWZzLCBidWZtKSkpOworCQkJCSBlcnJtc2coIlNUQVJUIHZhbHVlICglbGxk KSBjYW5ub3QgYmUgbGVzcyB0aGFuIE1JTlZBTFVFICglbGxkKSIsCisJCQkJCQkobG9uZyBsb25n IGludClzZXFmb3JtLT5zZXFzdGFydCwgKGxvbmcgbG9uZyBpbnQpc2VxZm9ybS0+c2VxbWluKSkp OwogCX0KIAlpZiAoc2VxZm9ybS0+c2Vxc3RhcnQgPiBzZXFmb3JtLT5zZXFtYXgpCiAJewotCQlj aGFyCQlidWZzWzEwMF0sCi0JCQkJCWJ1Zm1bMTAwXTsKLQotCQlzbnByaW50ZihidWZzLCBzaXpl b2YoYnVmcyksIElOVDY0X0ZPUk1BVCwgc2VxZm9ybS0+c2Vxc3RhcnQpOwotCQlzbnByaW50Zihi dWZtLCBzaXplb2YoYnVmbSksIElOVDY0X0ZPUk1BVCwgc2VxZm9ybS0+c2VxbWF4KTsKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKLQkJCQkgZXJybXNnKCJTVEFSVCB2YWx1ZSAoJXMpIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4g TUFYVkFMVUUgKCVzKSIsCi0JCQkJCQlidWZzLCBidWZtKSkpOworCQkJCSBlcnJtc2coIlNUQVJU IHZhbHVlICglbGxkKSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIE1BWFZBTFVFICglbGxkKSIsCisJ CQkJCQkobG9uZyBsb25nIGludClzZXFmb3JtLT5zZXFzdGFydCwgKGxvbmcgbG9uZyBpbnQpc2Vx Zm9ybS0+c2VxbWF4KSkpOwogCX0KIAogCS8qIFJFU1RBUlQgW1dJVEhdICovCkBAIC0xNTg4LDI3 ICsxNTUyLDE3IEBAIGluaXRfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3B0aW9u cywgYm9vbCBmb3JfaWRlbnRpdHksCiAJLyogY3Jvc3NjaGVjayBSRVNUQVJUIChvciBjdXJyZW50 IHZhbHVlLCBpZiBjaGFuZ2luZyBNSU4vTUFYKSAqLwogCWlmIChzZXFkYXRhZm9ybS0+bGFzdF92 YWx1ZSA8IHNlcWZvcm0tPnNlcW1pbikKIAl7Ci0JCWNoYXIJCWJ1ZnNbMTAwXSwKLQkJCQkJYnVm bVsxMDBdOwotCi0JCXNucHJpbnRmKGJ1ZnMsIHNpemVvZihidWZzKSwgSU5UNjRfRk9STUFULCBz ZXFkYXRhZm9ybS0+bGFzdF92YWx1ZSk7Ci0JCXNucHJpbnRmKGJ1Zm0sIHNpemVvZihidWZtKSwg SU5UNjRfRk9STUFULCBzZXFmb3JtLT5zZXFtaW4pOwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coIlJF U1RBUlQgdmFsdWUgKCVzKSBjYW5ub3QgYmUgbGVzcyB0aGFuIE1JTlZBTFVFICglcykiLAotCQkJ CQkJYnVmcywgYnVmbSkpKTsKKwkJCQkgZXJybXNnKCJSRVNUQVJUIHZhbHVlICglbGxkKSBjYW5u b3QgYmUgbGVzcyB0aGFuIE1JTlZBTFVFICglbGxkKSIsCisJCQkJCQkobG9uZyBsb25nIGludClz ZXFkYXRhZm9ybS0+bGFzdF92YWx1ZSwgKGxvbmcgbG9uZyBpbnQpc2VxZm9ybS0+c2VxbWluKSkp OwogCX0KIAlpZiAoc2VxZGF0YWZvcm0tPmxhc3RfdmFsdWUgPiBzZXFmb3JtLT5zZXFtYXgpCiAJ ewotCQljaGFyCQlidWZzWzEwMF0sCi0JCQkJCWJ1Zm1bMTAwXTsKLQotCQlzbnByaW50ZihidWZz LCBzaXplb2YoYnVmcyksIElOVDY0X0ZPUk1BVCwgc2VxZGF0YWZvcm0tPmxhc3RfdmFsdWUpOwot CQlzbnByaW50ZihidWZtLCBzaXplb2YoYnVmbSksIElOVDY0X0ZPUk1BVCwgc2VxZm9ybS0+c2Vx bWF4KTsKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJSRVNUQVJUIHZhbHVlICglcykgY2Fubm90IGJl IGdyZWF0ZXIgdGhhbiBNQVhWQUxVRSAoJXMpIiwKLQkJCQkJCWJ1ZnMsIGJ1Zm0pKSk7CisJCQkJ IGVycm1zZygiUkVTVEFSVCB2YWx1ZSAoJWxsZCkgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBNQVhW QUxVRSAoJWxsZCkiLAorCQkJCQkJKGxvbmcgbG9uZyBpbnQpc2VxZGF0YWZvcm0tPmxhc3RfdmFs dWUsIChsb25nIGxvbmcgaW50KXNlcWZvcm0tPnNlcW1heCkpKTsKIAl9CiAKIAkvKiBDQUNIRSAq LwpAQCAtMTYxNywxMyArMTU3MSwxMCBAQCBpbml0X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKm9wdGlvbnMsIGJvb2wgZm9yX2lkZW50aXR5LAogCQlzZXFmb3JtLT5zZXFjYWNoZSA9 IGRlZkdldEludDY0KGNhY2hlX3ZhbHVlKTsKIAkJaWYgKHNlcWZvcm0tPnNlcWNhY2hlIDw9IDAp CiAJCXsKLQkJCWNoYXIJCWJ1ZlsxMDBdOwotCi0JCQlzbnByaW50ZihidWYsIHNpemVvZihidWYp LCBJTlQ2NF9GT1JNQVQsIHNlcWZvcm0tPnNlcWNhY2hlKTsKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkgZXJy bXNnKCJDQUNIRSAoJXMpIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8iLAotCQkJCQkJCWJ1Zikp KTsKKwkJCQkJIGVycm1zZygiQ0FDSEUgKCVsbGQpIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8i LAorCQkJCQkJCShsb25nIGxvbmcgaW50KXNlcWZvcm0tPnNlcWNhY2hlKSkpOwogCQl9CiAJCXNl cWRhdGFmb3JtLT5sb2dfY250ID0gMDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQveGlkOGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQveGlkOGZ1bmNzLmMKaW5k ZXggNjBlNTc4NzZkZS4uZTMyMWE3MDEzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3hpZDhmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC94aWQ4ZnVuY3MuYwpA QCAtMTEzLDkgKzExMyw4IEBAIFRyYW5zYWN0aW9uSWRJblJlY2VudFBhc3QoRnVsbFRyYW5zYWN0 aW9uSWQgZnhpZCwgVHJhbnNhY3Rpb25JZCAqZXh0cmFjdGVkX3hpZCkKIAlpZiAoIUZ1bGxUcmFu c2FjdGlvbklkUHJlY2VkZXMoZnhpZCwgbm93X2Z1bGx4aWQpKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJt c2coInRyYW5zYWN0aW9uIElEICVzIGlzIGluIHRoZSBmdXR1cmUiLAotCQkJCQkJcHNwcmludGYo VUlOVDY0X0ZPUk1BVCwKLQkJCQkJCQkJIFU2NEZyb21GdWxsVHJhbnNhY3Rpb25JZChmeGlkKSkp KSk7CisJCQkJIGVycm1zZygidHJhbnNhY3Rpb24gSUQgJWxsdSBpcyBpbiB0aGUgZnV0dXJlIiwK KwkJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpVTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGZ4aWQp KSkpOwogCiAJLyoKIAkgKiBTaG1lbVZhcmlhYmxlQ2FjaGUtPm9sZGVzdENsb2dYaWQgaXMgcHJv dGVjdGVkIGJ5IFhhY3RUcnVuY2F0aW9uTG9jaywKLS0gCjIuMzUuMQoK --00000000000084890f05dab69d7c--