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.96) (envelope-from ) id 1wEgqf-004IRv-2C for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 05:07:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEgqe-000eCo-30 for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 05:07:04 +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.96) (envelope-from ) id 1wEgqe-000eCg-1x for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 05:07:04 +0000 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEgqc-000000024vS-1CHH for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 05:07:04 +0000 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2ad617d5b80so13776275ad.1 for ; Sun, 19 Apr 2026 22:07:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776661620; cv=none; d=google.com; s=arc-20240605; b=NP3lyQBG0bQuYguK/QHQFjW1nIgrDLU8Jv8fe1NKJS8QvSg+NTCdvj3O1dHjvKPpGe oyHJY7xpyBT7ZMgLYZB+8Sgh7xXba4MsW5/0dTuN131Bn8JEg8qB4yebu/VuLt65p8DA B2lquVV6sNr8twSjiap026esmip2ZInhYnCl+qnMS0+0oOwIQLYsCpKHsYaS036L6cFK nA86zuRrCuhdSDDIm2mRI8fyrGDIuve4ZpfHpDz42L89Bhj2w/zrzf9TQ46/1ezzfxr6 mZsyTB2NozEmj2UM7zyoK9TfOeSlA9N6NrwKKhMZwDs50WfKFu13L0DxmPbpnO8MZQRm 3mFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=CYnD8/hKkKTmaB42V1Thdl+KTGv40tMDe5cuVUnhmAg=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=hxjeSu8HxZJgQUjMS4cvGPsETcRgPRZ2JF89e0rMl39TmVMNDwY74osZ4xPdjw8CZx A4ctL4KapG7I9i2/zYClBT8qxRY8XDHDlAzz4DznAevw96DHbdGeIOmevjo6wFSeo2bk Q9/U2e6v1nfmnHLABc9yl1ZLgL8qRZZJhWS6EbjmMHkCcydFHhUnvC1sgVNSNJI7xnPe 5GoiCI+uGaAL8yva7NrCpfZfI75jtzL0+Sl0FPr93K/r8XVfPqAs7nKP9msILA0CpkjG Z3lYsKqMy7i8uThKMuIu169NiKIQUvj8aQXsKBsg+azzsBHad6VFFSqwX8WOUvQpxBN1 oH5A==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776661620; x=1777266420; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=CYnD8/hKkKTmaB42V1Thdl+KTGv40tMDe5cuVUnhmAg=; b=hxDYKYAsMwkz/tq4S55ZAmQ8DbWw7szLOkeBjO6R/mrSDnUFeNJtapCAdciGY8kxIy zvp1S0GMLtSZnChIuE/u49FNMsEqwP32VDnMIiLQtufRpcKJ0yV5wNA+RuxWFVQFUTS7 8xQYgcDUMp1cXGr663i3VrlK7AFYLEx/zRqcc7ukvQ4B+nxnGb6V/+5ZKagrn9Pjmtma OXgy1bYW253gWPcYtwGZLD2h28Ikl/YshHkCVriaIQwsnaWHsYc5tkIiu6vIeluhPbqa zm1wk3G0/BsX8O5klCkf5EkZ8wJhmD/4UUVZGwgww9skhoMA2JnWd/uJtYR00T8sQldS EN7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776661620; x=1777266420; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CYnD8/hKkKTmaB42V1Thdl+KTGv40tMDe5cuVUnhmAg=; b=VQQnymMtC6ubmHErVLndmufwFhEHwwNFFqStcUFRepLi1WIf17xEj4deWLe+MJhfS3 3qM9un0cMu/SG1eDIdpFyg2gMYBXKBb14SgUxDqlkffcozl8jTaFEFHEedZzL16ezZAm Ttx89ZKN5MVQjSU1/biYnvJ+rIbGN6bExLK+JDJuKYo94B3LeJvMPb0ZT4/uZ1GlMDAs aZ4iqwHFQL37BnMKwpQZWEeikDnVFycnaAAt9gkkiKqXZuTDjkxW1d4ItDeakIxj1Fxd MwVKNVhhgTx3Z6M14B+KBG7Z6fhIJWxsKYSVckm0MlAa08C+UnjBsgwHX4pFBbPfFRQk hG0w== X-Gm-Message-State: AOJu0Yw5/2XPOBXIlWGIF6vjHTjhM8lU9uh16o/kisScZQmGBkSEsOS+ hmsu0huKucEsOLRCKjmdFsifwoLFhGG9R5nzGVZD0pE7kNOKjhAry+p66AnRtWvsE3CI2q2yRog dgbFUx9seNazA0MHP9+c3fNvaMWjHJKdfTA== X-Gm-Gg: AeBDievmrbohIY7nqgqFE0um0DCMGkXz+H8gKTR7n0eK7EnH4xC32yFw1rsg7epDATj zpbW+gIdNlBkJbxNwt6UDK/tS7K36JGjKv+06+pV84xNjnMa+hqu/vQqjHCeEB7aHuG98qyBPD/ 7XUaoCY3kceJ+/oogetHKYZA0edSn/tuSxBpS8rX6qlz7vkpm/b9OAPf5TkQLoa8Ojx43u1v+rt wgtyaQUcQoHIdt9q7cQD6Yvb22kmX/rGIuouMi94uw6SPut0iiTRa/KcTOtYYPYPNfadds0NoKp h28cL5sbGu79OqEKqPktpcsXIWMlNA== X-Received: by 2002:a17:903:46c8:b0:2b4:5f83:a9d6 with SMTP id d9443c01a7336-2b5f9fbba9cmr134969135ad.34.1776661619471; Sun, 19 Apr 2026 22:06:59 -0700 (PDT) MIME-Version: 1.0 From: Amul Sul Date: Mon, 20 Apr 2026 10:36:21 +0530 X-Gm-Features: AQROBzApvP_woGgX2sglOEugR3VY78nz1u2_JILPBXC8RXs5S1h0K1ukpBvmzls Message-ID: Subject: Cleanup: Replace sscanf with strtol/strtoul in snapmgr To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b711e1064fdd44fa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b711e1064fdd44fa Content-Type: text/plain; charset="UTF-8" Hi, The attached patch replaces sscanf with strtol and strtoul in the ImportSnapshot helpers (parseIntFromText, parseXidFromText, and parseVxidFromText) to improve reliability and efficiency. By utilizing the end pointer, we can locate the next line without re-scanning the entire string. Additionally, this change aligns the snapshot code with the rest of the Postgres backend, which already favors these functions for safer parsing. -- Regards, Amul Sul EDB: http://www.enterprisedb.com --000000000000b711e1064fdd44fa Content-Type: application/x-patch; name="0001-snapmgr-replace-sscanf-with-strtol-strtoul-in-snapsh.patch" Content-Disposition: attachment; filename="0001-snapmgr-replace-sscanf-with-strtol-strtoul-in-snapsh.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo6pxjfl0 RnJvbSA5ODY5YjlmMTk3NzVkZTdkMTNmMWJhZGE1ZGI1ZDhmMTRiZjIwODU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IE1v biwgMjAgQXByIDIwMjYgMTA6MjE6MjggKzA1MzAKU3ViamVjdDogW1BBVENIXSBzbmFwbWdyOiBy ZXBsYWNlIHNzY2FuZiB3aXRoIHN0cnRvbC9zdHJ0b3VsIGluIHNuYXBzaG90IHBhcnNlCiBoZWxw ZXJzCgpwYXJzZUludEZyb21UZXh0LCBwYXJzZVhpZEZyb21UZXh0LCBhbmQgcGFyc2VWeGlkRnJv bVRleHQgdXNlZCBzc2NhbmYKdG8gY29udmVydCBkaWdpdCBzdHJpbmdzIHRvIGludGVnZXJzLiAg UmVwbGFjZSB3aXRoIHN0cnRvbC9zdHJ0b3VsLAp3aGljaCBwcm92aWRlIGV4cGxpY2l0IG92ZXJm bG93IGRldGVjdGlvbiBhbmQgYWR2YW5jZSB0aGUgZW5kLXBvaW50ZXIKZGlyZWN0bHksIGF2b2lk aW5nIGEgcmVkdW5kYW50IHN0cmNociBzY2FuIG92ZXIgdGhlIGFscmVhZHktcGFyc2VkCmRpZ2l0 cy4KLS0tCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyB8IDQ1ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwg MTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCAxMGZlMThkZjJl Ny4uMjBiODQyMWI4ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1n ci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC0xMzA4LDI0ICsx MzA4LDI3IEBAIHBhcnNlSW50RnJvbVRleHQoY29uc3QgY2hhciAqcHJlZml4LCBjaGFyICoqcywg Y29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJY2hhcgkgICAqcHRyID0gKnM7CiAJaW50CQkJcHJl Zml4bGVuID0gc3RybGVuKHByZWZpeCk7Ci0JaW50CQkJdmFsOworCWxvbmcJCXZhbDsKKwljaGFy CSAgICplbmRwdHI7CiAKIAlpZiAoc3RybmNtcChwdHIsIHByZWZpeCwgcHJlZml4bGVuKSAhPSAw KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JF UFJFU0VOVEFUSU9OKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIHNuYXBzaG90IGRhdGEgaW4gZmls ZSBcIiVzXCIiLCBmaWxlbmFtZSkpKTsKIAlwdHIgKz0gcHJlZml4bGVuOwotCWlmIChzc2NhbmYo cHRyLCAiJWQiLCAmdmFsKSAhPSAxKQorCWVycm5vID0gMDsKKwl2YWwgPSBzdHJ0b2wocHRyLCAm ZW5kcHRyLCAxMCk7CisJaWYgKGVuZHB0ciA9PSBwdHIgfHwgZXJybm8gIT0gMCB8fCB2YWwgPCBJ TlRfTUlOIHx8IHZhbCA+IElOVF9NQVgpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCSBlcnJtc2coImludmFs aWQgc25hcHNob3QgZGF0YSBpbiBmaWxlIFwiJXNcIiIsIGZpbGVuYW1lKSkpOwotCXB0ciA9IHN0 cmNocihwdHIsICdcbicpOworCXB0ciA9IHN0cmNocihlbmRwdHIsICdcbicpOwogCWlmICghcHRy KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JF UFJFU0VOVEFUSU9OKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIHNuYXBzaG90IGRhdGEgaW4gZmls ZSBcIiVzXCIiLCBmaWxlbmFtZSkpKTsKIAkqcyA9IHB0ciArIDE7Ci0JcmV0dXJuIHZhbDsKKwly ZXR1cm4gKGludCkgdmFsOwogfQogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZApAQCAtMTMzMywyNCAr MTMzNiwyNyBAQCBwYXJzZVhpZEZyb21UZXh0KGNvbnN0IGNoYXIgKnByZWZpeCwgY2hhciAqKnMs IGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogCWNoYXIJICAgKnB0ciA9ICpzOwogCWludAkJCXBy ZWZpeGxlbiA9IHN0cmxlbihwcmVmaXgpOwotCVRyYW5zYWN0aW9uSWQgdmFsOworCXVuc2lnbmVk IGxvbmcgdmFsOworCWNoYXIJICAgKmVuZHB0cjsKIAogCWlmIChzdHJuY21wKHB0ciwgcHJlZml4 LCBwcmVmaXhsZW4pICE9IDApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCSBlcnJtc2coImludmFsaWQgc25h cHNob3QgZGF0YSBpbiBmaWxlIFwiJXNcIiIsIGZpbGVuYW1lKSkpOwogCXB0ciArPSBwcmVmaXhs ZW47Ci0JaWYgKHNzY2FuZihwdHIsICIldSIsICZ2YWwpICE9IDEpCisJZXJybm8gPSAwOworCXZh bCA9IHN0cnRvdWwocHRyLCAmZW5kcHRyLCAxMCk7CisJaWYgKGVuZHB0ciA9PSBwdHIgfHwgZXJy bm8gIT0gMCB8fCB2YWwgPiBVSU5UX01BWCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCiAJCQkJIGVycm1zZygiaW52 YWxpZCBzbmFwc2hvdCBkYXRhIGluIGZpbGUgXCIlc1wiIiwgZmlsZW5hbWUpKSk7Ci0JcHRyID0g c3RyY2hyKHB0ciwgJ1xuJyk7CisJcHRyID0gc3RyY2hyKGVuZHB0ciwgJ1xuJyk7CiAJaWYgKCFw dHIpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRf UkVQUkVTRU5UQVRJT04pLAogCQkJCSBlcnJtc2coImludmFsaWQgc25hcHNob3QgZGF0YSBpbiBm aWxlIFwiJXNcIiIsIGZpbGVuYW1lKSkpOwogCSpzID0gcHRyICsgMTsKLQlyZXR1cm4gdmFsOwor CXJldHVybiAoVHJhbnNhY3Rpb25JZCkgdmFsOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTM1OSwx NyArMTM2NSwzNiBAQCBwYXJzZVZ4aWRGcm9tVGV4dChjb25zdCBjaGFyICpwcmVmaXgsIGNoYXIg KipzLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIHsKIAljaGFyCSAgICpwdHIgPSAqczsKIAlpbnQJ CQlwcmVmaXhsZW4gPSBzdHJsZW4ocHJlZml4KTsKKwlsb25nCQlsdmFsOworCXVuc2lnbmVkIGxv bmcgdWx2YWw7CisJY2hhcgkgICAqZW5kcHRyOwogCiAJaWYgKHN0cm5jbXAocHRyLCBwcmVmaXgs IHByZWZpeGxlbikgIT0gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCiAJCQkJIGVycm1zZygiaW52YWxpZCBzbmFw c2hvdCBkYXRhIGluIGZpbGUgXCIlc1wiIiwgZmlsZW5hbWUpKSk7CiAJcHRyICs9IHByZWZpeGxl bjsKLQlpZiAoc3NjYW5mKHB0ciwgIiVkLyV1IiwgJnZ4aWQtPnByb2NOdW1iZXIsICZ2eGlkLT5s b2NhbFRyYW5zYWN0aW9uSWQpICE9IDIpCisKKwkvKiBQYXJzZSBwcm9jTnVtYmVyICh0aGUgc2ln bmVkIGludGVnZXIgYmVmb3JlICcvJykgKi8KKwllcnJubyA9IDA7CisJbHZhbCA9IHN0cnRvbChw dHIsICZlbmRwdHIsIDEwKTsKKwlpZiAoZW5kcHRyID09IHB0ciB8fCBlcnJubyAhPSAwIHx8IGx2 YWwgPCBJTlRfTUlOIHx8IGx2YWwgPiBJTlRfTUFYIHx8CisJCSplbmRwdHIgIT0gJy8nKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VO VEFUSU9OKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIHNuYXBzaG90IGRhdGEgaW4gZmlsZSBcIiVz XCIiLCBmaWxlbmFtZSkpKTsKLQlwdHIgPSBzdHJjaHIocHRyLCAnXG4nKTsKKwl2eGlkLT5wcm9j TnVtYmVyID0gKFByb2NOdW1iZXIpIGx2YWw7CisJcHRyID0gZW5kcHRyICsgMTsJCQkvKiBza2lw IHRoZSAnLycgc2VwYXJhdG9yICovCisKKwkvKiBQYXJzZSBsb2NhbFRyYW5zYWN0aW9uSWQgKHRo ZSB1bnNpZ25lZCBpbnRlZ2VyIGFmdGVyICcvJykgKi8KKwllcnJubyA9IDA7CisJdWx2YWwgPSBz dHJ0b3VsKHB0ciwgJmVuZHB0ciwgMTApOworCWlmIChlbmRwdHIgPT0gcHRyIHx8IGVycm5vICE9 IDAgfHwgdWx2YWwgPiBVSU5UX01BWCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJIGVycm1zZygiaW52YWxp ZCBzbmFwc2hvdCBkYXRhIGluIGZpbGUgXCIlc1wiIiwgZmlsZW5hbWUpKSk7CisJdnhpZC0+bG9j YWxUcmFuc2FjdGlvbklkID0gKExvY2FsVHJhbnNhY3Rpb25JZCkgdWx2YWw7CisJcHRyID0gc3Ry Y2hyKGVuZHB0ciwgJ1xuJyk7CiAJaWYgKCFwdHIpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAotLSAKMi40Ny4xCgo= --000000000000b711e1064fdd44fa--