Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rdCLN-004MVQ-JU for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Feb 2024 16:54:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rdCLL-00ChOx-7e for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Feb 2024 16:54:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rdCLK-00ChOp-P2 for pgsql-hackers@lists.postgresql.org; Thu, 22 Feb 2024 16:54:43 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rdCLH-000MsO-HO for pgsql-hackers@lists.postgresql.org; Thu, 22 Feb 2024 16:54:42 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.imamov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 05FEBE20EC3 for ; Thu, 22 Feb 2024 19:54:38 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1708620878; bh=4QG+Ya4SPoJkFOctFdSOVJ8dlCzKxVpdr3vVx55T00s=; h=Date:From:To:Subject:User-Agent:Message-ID:From; b=E92rTtO8AFTjeWF/z5QJA793J0W+KyzTx+h7Yk05AP3OLmA/Rf5vJctLu6ViRpj/d SpEt/X461Zja9BOuWgPJXgc2gq4BVaY/uIL8FG4iHSwXV9BmQ91U0N80OfGWNXGgyi +X+bAlca4FMQapu+4yTVQMmz7MfkMXeZatrBbewtBFIZkKjDAHB8XjwWNzj4q7CT/y awmwtBzmUqlVtmkdYtAmB+YS6dSLdkYFJERM6r+1GgrHNWXrJK31CO5KmXm98PkHEz DfaOy9h+akC0oDzMLpzJ69iSkhC0wEpzRwaYeO2EBNXUpsInnNw+JbdF27YkdUot+f gNSV/UQZDwbKw== MIME-Version: 1.0 Date: Thu, 22 Feb 2024 19:54:37 +0300 From: a.imamov@postgrespro.ru To: PostgreSQL Hackers Subject: Potential issue in ecpg-informix decimal converting functions User-Agent: Roundcube Webmail/1.6.5 Message-ID: <54d2b53327516d9454daa5fb2f893bdc@postgrespro.ru> X-Sender: a.imamov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_136f4415c0e0b72958b10e61186c6798" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_136f4415c0e0b72958b10e61186c6798 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, everyone! I found a potential bug in dectoint() and dectolong() functions from informix.c. "Informix Compatibility Mode" doc chapter says that ECPG_INFORMIX_NUM_OVERFLOW is returned if an overflow occurred. But check this line in dectoint() or dectolong() (it is present in both): if (ret == PGTYPES_NUM_OVERFLOW) - condition is always false because PGTYPESnumeric_to_int() and PGTYPESnumeric_to_long() functions return only 0 or -1. So ECPG_INFORMIX_NUM_OVERFLOW can never be returned. I think dectoint(), dectolong() and PGTYPESnumeric_to_int() functions should be a little bit different like in proposing patch. What do you think? The flaw was catched with the help of Svace static analyzer. https://svace.pages.ispras.ru/svace-website/en/ Thank you! --=_136f4415c0e0b72958b10e61186c6798 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=informix_convert_from_decimal.patch Content-Disposition: attachment; filename=informix_convert_from_decimal.patch; size=5862 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9lY3BnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZWNwZy5z Z21sCmluZGV4IDczMzUxYTkxMzYuLjgzOTBhNjFjZjQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9lY3BnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2VjcGcuc2dtbApAQCAtODg4Miw3ICs4ODgy LDcgQEAgaW50IGRlY3RvZGJsKGRlY2ltYWwgKm5wLCBkb3VibGUgKmRibHApOwogICAgICAgPHRl cm0+PGZ1bmN0aW9uPmRlY3RvaW50PC9mdW5jdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+ CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIENvbnZlcnQgYSB2YXJpYWJsZSB0byB0eXBlIGRlY2lt YWwgdG8gYW4gaW50ZWdlci4KKyAgICAgICAgQ29udmVydCBhIHZhcmlhYmxlIG9mIHR5cGUgZGVj aW1hbCB0byBhbiBpbnRlZ2VyLgogPHN5bm9wc2lzPgogaW50IGRlY3RvaW50KGRlY2ltYWwgKm5w LCBpbnQgKmlwKTsKIDwvc3lub3BzaXM+CkBAIC04ODkyLDggKzg4OTIsOSBAQCBpbnQgZGVjdG9p bnQoZGVjaW1hbCAqbnAsIGludCAqaXApOwogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4K ICAgICAgICAgT24gc3VjY2VzcywgMCBpcyByZXR1cm5lZCBhbmQgYSBuZWdhdGl2ZSB2YWx1ZSBp ZiB0aGUgY29udmVyc2lvbgotICAgICAgICBmYWlsZWQuIElmIGFuIG92ZXJmbG93IG9jY3VycmVk LCA8bGl0ZXJhbD5FQ1BHX0lORk9STUlYX05VTV9PVkVSRkxPVzwvbGl0ZXJhbD4KLSAgICAgICAg aXMgcmV0dXJuZWQuCisgICAgICAgIGZhaWxlZC4gSWYgb3ZlcmZsb3cgb3IgdW5kZXJmbG93IG9j Y3VycmVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucworICAgICAgICA8bGl0ZXJhbD5FQ1BHX0lORk9S TUlYX05VTV9PVkVSRkxPVzwvbGl0ZXJhbD4gb3IKKyAgICAgICAgPGxpdGVyYWw+RUNQR19JTkZP Uk1JWF9OVU1fVU5ERVJGTE9XPC9saXRlcmFsPiByZXNwZWN0aXZlbHkuCiAgICAgICAgPC9wYXJh PgogICAgICAgIDxwYXJhPgogICAgICAgICBOb3RlIHRoYXQgdGhlIEVDUEcgaW1wbGVtZW50YXRp b24gZGlmZmVycyBmcm9tIHRoZSA8cHJvZHVjdG5hbWU+SW5mb3JtaXg8L3Byb2R1Y3RuYW1lPgpA QCAtODkwOCw3ICs4OTA5LDcgQEAgaW50IGRlY3RvaW50KGRlY2ltYWwgKm5wLCBpbnQgKmlwKTsK ICAgICAgIDx0ZXJtPjxmdW5jdGlvbj5kZWN0b2xvbmc8L2Z1bmN0aW9uPjwvdGVybT4KICAgICAg IDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgQ29udmVydCBhIHZhcmlhYmxlIHRv IHR5cGUgZGVjaW1hbCB0byBhIGxvbmcgaW50ZWdlci4KKyAgICAgICAgQ29udmVydCBhIHZhcmlh YmxlIG9mIHR5cGUgZGVjaW1hbCB0byBhIGxvbmcgaW50ZWdlci4KIDxzeW5vcHNpcz4KIGludCBk ZWN0b2xvbmcoZGVjaW1hbCAqbnAsIGxvbmcgKmxuZ3ApOwogPC9zeW5vcHNpcz4KQEAgLTg5MTgs OCArODkxOSw5IEBAIGludCBkZWN0b2xvbmcoZGVjaW1hbCAqbnAsIGxvbmcgKmxuZ3ApOwogICAg ICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgT24gc3VjY2VzcywgMCBpcyByZXR1 cm5lZCBhbmQgYSBuZWdhdGl2ZSB2YWx1ZSBpZiB0aGUgY29udmVyc2lvbgotICAgICAgICBmYWls ZWQuIElmIGFuIG92ZXJmbG93IG9jY3VycmVkLCA8bGl0ZXJhbD5FQ1BHX0lORk9STUlYX05VTV9P VkVSRkxPVzwvbGl0ZXJhbD4KLSAgICAgICAgaXMgcmV0dXJuZWQuCisgICAgICAgIGZhaWxlZC4g SWYgb3ZlcmZsb3cgb3IgdW5kZXJmbG93IG9jY3VycmVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucwor ICAgICAgICA8bGl0ZXJhbD5FQ1BHX0lORk9STUlYX05VTV9PVkVSRkxPVzwvbGl0ZXJhbD4gb3IK KyAgICAgICAgPGxpdGVyYWw+RUNQR19JTkZPUk1JWF9OVU1fVU5ERVJGTE9XPC9saXRlcmFsPiBy ZXNwZWN0aXZlbHkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBOb3Rl IHRoYXQgdGhlIEVDUEcgaW1wbGVtZW50YXRpb24gZGlmZmVycyBmcm9tIHRoZSA8cHJvZHVjdG5h bWU+SW5mb3JtaXg8L3Byb2R1Y3RuYW1lPgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNw Zy9jb21wYXRsaWIvaW5mb3JtaXguYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvY29tcGF0bGliL2lu Zm9ybWl4LmMKaW5kZXggODBkNDBhYTNlMC4uNzNlODRiYzZlMyAxMDA2NDQKLS0tIGEvc3JjL2lu dGVyZmFjZXMvZWNwZy9jb21wYXRsaWIvaW5mb3JtaXguYworKysgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL2NvbXBhdGxpYi9pbmZvcm1peC5jCkBAIC00MzUsNiArNDM1LDcgQEAgZGVjdG9pbnQoZGVj aW1hbCAqbnAsIGludCAqaXApCiB7CiAJaW50CQkJcmV0OwogCW51bWVyaWMgICAgKm5yZXMgPSBQ R1RZUEVTbnVtZXJpY19uZXcoKTsKKwlpbnQJCQllcnJudW0gPSAwOwogCiAJaWYgKG5yZXMgPT0g TlVMTCkKIAkJcmV0dXJuIEVDUEdfSU5GT1JNSVhfT1VUX09GX01FTU9SWTsKQEAgLTQ0NSwxMSAr NDQ2LDE4IEBAIGRlY3RvaW50KGRlY2ltYWwgKm5wLCBpbnQgKmlwKQogCQlyZXR1cm4gRUNQR19J TkZPUk1JWF9PVVRfT0ZfTUVNT1JZOwogCX0KIAorCWVycm5vID0gMDsKIAlyZXQgPSBQR1RZUEVT bnVtZXJpY190b19pbnQobnJlcywgaXApOworCWVycm51bSA9IGVycm5vOwogCVBHVFlQRVNudW1l cmljX2ZyZWUobnJlcyk7CiAKLQlpZiAocmV0ID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKQotCQly ZXQgPSBFQ1BHX0lORk9STUlYX05VTV9PVkVSRkxPVzsKKwlpZiAocmV0KQorCXsKKwkJaWYgKGVy cm51bSA9PSBQR1RZUEVTX05VTV9VTkRFUkZMT1cpCisJCQlyZXQgPSBFQ1BHX0lORk9STUlYX05V TV9VTkRFUkZMT1c7CisJCWVsc2UgaWYgKGVycm51bSA9PSBQR1RZUEVTX05VTV9PVkVSRkxPVykK KwkJCXJldCA9IEVDUEdfSU5GT1JNSVhfTlVNX09WRVJGTE9XOworCX0KIAogCXJldHVybiByZXQ7 CiB9CkBAIC00NTksNiArNDY3LDcgQEAgZGVjdG9sb25nKGRlY2ltYWwgKm5wLCBsb25nICpsbmdw KQogewogCWludAkJCXJldDsKIAludW1lcmljICAgICpucmVzID0gUEdUWVBFU251bWVyaWNfbmV3 KCk7CisJaW50CQkJZXJybnVtID0gMDsKIAogCWlmIChucmVzID09IE5VTEwpCiAJCXJldHVybiBF Q1BHX0lORk9STUlYX09VVF9PRl9NRU1PUlk7CkBAIC00NjksMTEgKzQ3OCwxOCBAQCBkZWN0b2xv bmcoZGVjaW1hbCAqbnAsIGxvbmcgKmxuZ3ApCiAJCXJldHVybiBFQ1BHX0lORk9STUlYX09VVF9P Rl9NRU1PUlk7CiAJfQogCisJZXJybm8gPSAwOwogCXJldCA9IFBHVFlQRVNudW1lcmljX3RvX2xv bmcobnJlcywgbG5ncCk7CisJZXJybnVtID0gZXJybm87CiAJUEdUWVBFU251bWVyaWNfZnJlZShu cmVzKTsKIAotCWlmIChyZXQgPT0gUEdUWVBFU19OVU1fT1ZFUkZMT1cpCi0JCXJldCA9IEVDUEdf SU5GT1JNSVhfTlVNX09WRVJGTE9XOworCWlmIChyZXQpCisJeworCQlpZiAoZXJybnVtID09IFBH VFlQRVNfTlVNX1VOREVSRkxPVykKKwkJCXJldCA9IEVDUEdfSU5GT1JNSVhfTlVNX1VOREVSRkxP VzsKKwkJZWxzZSBpZiAoZXJybnVtID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKQorCQkJcmV0ID0g RUNQR19JTkZPUk1JWF9OVU1fT1ZFUkZMT1c7CisJfQogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcGd0eXBlc2xpYi9udW1lcmljLmMgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3BndHlwZXNsaWIvbnVtZXJpYy5jCmluZGV4IDM1ZTdiOTJkYTQuLjUyYjQ5 ZTFjZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcGd0eXBlc2xpYi9udW1lcmlj LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL251bWVyaWMuYwpAQCAtMTUw Miw3ICsxNTAyLDEyIEBAIFBHVFlQRVNudW1lcmljX3RvX2ludChudW1lcmljICpudiwgaW50ICpp cCkKIC8qIHNpbGVuY2UgY29tcGlsZXJzIHRoYXQgbWlnaHQgY29tcGxhaW4gYWJvdXQgdXNlbGVz cyB0ZXN0cyAqLwogI2lmIFNJWkVPRl9MT05HID4gU0laRU9GX0lOVAogCi0JaWYgKGwgPCBJTlRf TUlOIHx8IGwgPiBJTlRfTUFYKQorCWlmIChsIDwgSU5UX01JTikKKwl7CisJCWVycm5vID0gUEdU WVBFU19OVU1fVU5ERVJGTE9XOworCQlyZXR1cm4gLTE7CisJfQorCWVsc2UgaWYobCA+IElOVF9N QVgpCiAJewogCQllcnJubyA9IFBHVFlQRVNfTlVNX09WRVJGTE9XOwogCQlyZXR1cm4gLTE7CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvY29tcGF0X2luZm9y bWl4LWRlY190ZXN0LnN0ZG91dCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9j b21wYXRfaW5mb3JtaXgtZGVjX3Rlc3Quc3Rkb3V0CmluZGV4IDFmODY3NWIzZjMuLjcxYTVhZmE0 YTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9jb21wYXRf aW5mb3JtaXgtZGVjX3Rlc3Quc3Rkb3V0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9l eHBlY3RlZC9jb21wYXRfaW5mb3JtaXgtZGVjX3Rlc3Quc3Rkb3V0CkBAIC0zLDggKzMsOCBAQAog KG5vIGVycm5vIHNldCkgLSBkZWNbMCwzXTogcjogLTEsICoKIChubyBlcnJubyBzZXQpIC0gZGVj WzAsNF06IHI6IC0xLCAqCiBkZWNbMCw1XTogcjogMCwgMC4wMAotKGVycm5vID09IFBHVFlQRVNf TlVNX09WRVJGTE9XKSAtIGRlY1swLDZdOiAwIChyOiAtMSkKLShlcnJubyA9PSBQR1RZUEVTX05V TV9PVkVSRkxPVykgLSBkZWNbMCw4XTogMCAocjogLTEpCisoZXJybm8gPT0gUEdUWVBFU19OVU1f T1ZFUkZMT1cpIC0gZGVjWzAsNl06IDAgKHI6IC0xMjAwKQorKGVycm5vID09IFBHVFlQRVNfTlVN X09WRVJGTE9XKSAtIGRlY1swLDhdOiAwIChyOiAtMTIwMCkKIChlcnJubyA9PSBQR1RZUEVTX05V TV9PVkVSRkxPVykgLSBkZWNbMCwxMF06IDAgKHI6IC0xKQogCiBkZWNbMSwxXTogcjogMCwgLTIK QEAgLTQ1LDggKzQ1LDggQEAgZGVjWzQsMl06IHI6IDAsIDU5MjQ5MDAwMDAwMDAwMDAwMDAwMDAw MAogZGVjWzQsM106IHI6IDAsIDU5MjQ5MDAwMDAwMDAwMDAwMDAwMDAwMC4wCiBkZWNbNCw0XTog cjogMCwgNTkyNDkwMDAwMDAwMDAwMDAwMDAwMDAwLjAwCiBkZWNbNCw1XTogcjogMCwgMC4wMAot KGVycm5vID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKSAtIGRlY1s0LDZdOiAwIChyOiAtMSkKLShl cnJubyA9PSBQR1RZUEVTX05VTV9PVkVSRkxPVykgLSBkZWNbNCw4XTogMCAocjogLTEpCisoZXJy bm8gPT0gUEdUWVBFU19OVU1fT1ZFUkZMT1cpIC0gZGVjWzQsNl06IDAgKHI6IC0xMjAwKQorKGVy cm5vID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKSAtIGRlY1s0LDhdOiAwIChyOiAtMTIwMCkKIGRl Y1s0LDEwXTogNS45MjQ5ZSsyMyAocjogMCkKIAogZGVjWzUsMV06IHI6IDAsIC0zMjg0MDAKQEAg LTE0MSw4ICsxNDEsOCBAQCBkZWNbMTMsMl06IHI6IDAsIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2NzkKIGRlY1sxMywzXTogcjogMCwgMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3OC45CiBk ZWNbMTMsNF06IHI6IDAsIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2NzguOTEKIGRlY1sxMyw1 XTogcjogMCwgMC4wMAotKGVycm5vID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKSAtIGRlY1sxMyw2 XTogMCAocjogLTEpCi0oZXJybm8gPT0gUEdUWVBFU19OVU1fT1ZFUkZMT1cpIC0gZGVjWzEzLDhd OiAwIChyOiAtMSkKKyhlcnJubyA9PSBQR1RZUEVTX05VTV9PVkVSRkxPVykgLSBkZWNbMTMsNl06 IDAgKHI6IC0xMjAwKQorKGVycm5vID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKSAtIGRlY1sxMyw4 XTogMCAocjogLTEyMDApCiBkZWNbMTMsMTBdOiAxLjIzNDU3ZSsyNyAocjogMCkKIAogKGVycm5v ID09IFBHVFlQRVNfTlVNX09WRVJGTE9XKSAtIGRlY1sxNCwwXTogcjogLTEyMDAK --=_136f4415c0e0b72958b10e61186c6798--