[PATCH] changeword: Fix coredump on invalid regex

Eric Blake via M4-patches <[email protected]> Sat, 5 Apr 2025 06:25:35 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <[email protected]>
VGhlIGRvY3MgYXJlIGNsZWFyIHRoYXQgdGhlIG9ubHkgdmFsaWQgdXNlIG9mIHRoZSBleHBlcmlt
ZW50YWwKY2hhbmdld29yZCBpcyB0byBwYXNzIGEgcmVnZXggd2hlcmUgYWxsIHByZWZpeGVzIG9m
IGEgZGVzaXJlZAphY2NlcHRhYmxlIHdvcmQgYXJlIGFsc28gYWNjZXB0ZWQuICBJZiB0aGlzIGNv
bnN0cmFpbnQgaXMgbm90IG1ldCwgYW5kCnRoZSByZWdleCBjYW4gbWF0Y2ggYSBsb25nZXIgc3Ry
aW5nIGJ1dCBub3QgdGhlIG9uZS1ieXRlIHByZWZpeCBvZgp0aGF0IHN0cmluZywgdGhlbiB0aGUg
ZmFzdG1hcCBvZiB0aGF0IHJlZ2V4IHdpbGwgc3RpbGwgYmUgc2V0IG9uIHRoYXQKYnl0ZSAoYXMg
aXQgY291bGQgYmUgYSB2YWxpZCBhbmNob3IgdG8gdHJ5IHNlYXJjaGluZyBmb3IgYSBsb25nZXIK
bWF0Y2gpLCBidXQgd2hlbiByZV9zZWFyY2goKSB0aGVuIGZhaWxzIHRvIG1hdGNoLCB3ZSBhcmUg
bGVmdCB3aXRoCmdhcmJhZ2UgaW4gcmVncy5zdGFydC4KClRoZSBkb2NzIGV2ZW4gaGFkIGFuIGV4
YW1wbGUgd2hlcmUgdGhpcyBjb25zdHJhaW50IGlzIG5vdCBtZXQsIGJ1dApiZWNhdXNlIG9mIHRo
ZSB3YXkgdGhlIHRlc3Qgd2FzIHdyaXR0ZW4sIHRoZSBmaXJzdCBtYWNybyBwYXJzZWQgYWZ0ZXIK
Y2hhbmdld29yZCB3YXMgImRubCIsIHdoaWNoIHBvcHVsYXRlZCByZWdzIHdpdGggc29tZXRoaW5n
IHRoYXQgaGFwcGVucwp0byB3b3JrIG9uIHRoZSBuZXh0IGF0dGVtcHQgdG8gcGFyc2Ugd2l0aCBm
YWlsdXJlIHRvIG1hdGNoICJmIi4gIEJ1dAp0aGUgdGVzdCBhZGRlZCBoZXJlIGRlbW9uc3RyYXRl
cyB0aGF0IHdpdGhvdXQgYSBwcmlvciByZWdleCBtYXRjaCwgaWYKdGhlIGZpcnN0IGJ5dGUgYWZ0
ZXIgY2hhbmdld29yZCBpcyBpbiB0aGUgZmFzdG1hcCBidXQgZmFpbHMgdG8gcGFyc2UsCnRoZW4g
cmVncy5zdGFydCB3aWxsIHN0aWxsIGJlIE5VTEwgYW5kIGNyYXNoIG00LiAgQW5kIGV2ZW4gd2hl
biBtNApkaWRuJ3QgY3Jhc2gsIGl0J3Mgc3RpbGwgYmV0dGVyIHRvIG9ubHkgcmVseSBvbiByZWdz
IGFmdGVyIHJlLXJ1bm5pbmcKdGhlIHJlZ2V4IG9uIHRoZSBsYXJnZXN0IHN0cmluZyB0aGF0IGRp
ZCBtYXRjaCwgcmF0aGVyIHRoYW4gd2hhdGV2ZXIKaXMgbGVmdCBpbiByZWdzIGFmdGVyIHRoZSBm
aXJzdCBmYWlsdXJlIHRvIG1hdGNoIGEgb25lLWJ5dGUtbG9uZ2VyCnN0cmluZy4KCkkgX3JlYWxs
eV8gd2FudCB0byBnZXQgcmlkIG9mIGNoYW5nZXdvcmQuICBJdCBzbG93cyB0aGluZ3MgZG93biwg
YW5kCmlzIGEgbmlnaHRtYXJlIHRvIG1haW50YWluLiAgQW5kIHRoZSBmYWN0IHRoYXQgTk8gT05F
IHJlcG9ydGVkIHRoaXMKcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIDIwMDggKGJlY2F1c2UgbW9z
dCBkaXN0cm9zIHdpc2VseSByZWZ1c2UgdG8KYnVpbGQgd2l0aCAtLWVuYWJsZS1jaGFuZ2V3b3Jk
KSBtZWFucyBpdCB3b24ndCBiZSBtaXNzZWQuICBCdXQKcmVtb3ZpbmcgYSBmZWF0dXJlLCBldmVu
IGV4cGVyaW1lbnRhbCwgc2hvdWxkIGJlIGRvbmUgZm9yIDEuNiwgbm90CjEuNC54LgoKKiBORVdT
OiBEb2N1bWVudCB0aGUgYnVnIGZpeC4gIEFsc28gYSB3aGl0ZXNwYWNlIGZpeC4KKiBjZmcubWsg
KG9sZF9ORVdTX2hhc2gpOiBSdW4gJ21ha2UgdXBkYXRlLU5FV1MtaGFzaCcuCiogbTQudGV4aSAo
Q2hhbmdld29yZCk6IFRlc3QgZm9yIHRoZSBidWcuCiogaW5wdXQuYyAod29yZF9zdGFydCkgW0VO
QUJMRV9DSEFOR0VXT1JEXTogUmV2ZXJ0IGNvbW1pdCBjZGU4ZWQ2MiwKYnV0IHRoaXMgdGltZSB1
c2UgYSBzdGF0aWMgYXJyYXkgcmF0aGVyIHRoYW4gbWFsbG9jJ2QgcG9pbnRlci4KKHNldF93b3Jk
X3JlZ2V4cCk6IFBvcHVsYXRlIHdvcmRfc3RhcnQuCihwZWVrX3Rva2VuKTogVXNlIGl0LgoobmV4
dF90b2tlbik6IExpa2V3aXNlLCBhbmQgZG9uJ3QgdXNlIHJlZ3Muc3RhcnRbMV0gaWYgcmVnZXgg
ZGlkIG5vdApoYXZlIFwoXCkgZ3JvdXBpbmcuCi0tLQogTkVXUyAgICAgICAgfCAgOCArKysrKysr
KwogY2ZnLm1rICAgICAgfCAgMiArLQogZG9jL200LnRleGkgfCAxMyArKysrKysrKysrKysrCiBz
cmMvaW5wdXQuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDQ1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTkVXUyBi
L05FV1MKaW5kZXggNmMwOTYwNWYuLmM4Y2UwM2U0IDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05F
V1MKQEAgLTE2LDEyICsxNiwyMCBAQCBHTlUgTTQgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2Vz
LgogICAgY2hhbmdlIGJlbG9uZ3MgaW4gYSBtYWpvciB2ZXJzaW9uIHJlbGVhc2Ugc3VjaCBhcyAx
LjYsIGFuZCBub3QgYSBtaW5vcgogICAgcmVsZWFzZS4KCisqKiBGaXggcmVncmVzc2lvbiBpbnRy
b2R1Y2VkIGluIDEuNC4xMSB3aGVyZSB0aGUgZXhwZXJpbWVudGFsIGBjaGFuZ2V3b3JkJworICAg
YnVpbHRpbiBjb3VsZCBjYXVzZSBhIGNyYXNoIGlmIGdpdmVuIGEgcmVnZXggdGhhdCBkb2VzIG5v
dCBtYXRjaCBhbGwKKyAgIG9uZS1ieXRlIHByZWZpeGVzIG9mIHZhbGlkIGxvbmdlciBtYXRjaGVz
LiAgQXMgYSByZW1pbmRlciwgYGNoYW5nZXdvcmQnCisgICBpcyBub3QgcmVjb21tZW5kZWQgZm9y
IHByb2R1Y3Rpb24gdXNlLCBhbmQgd2lsbCBsaWtlbHkgbm90IGJlIHByZXNlbnQKKyAgIGluIHRo
ZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4KKworCiAqIE5vdGV3b3J0aHkgY2hhbmdlcyBp
biByZWxlYXNlIDEuNC4xOSAoMjAyMS0wNS0yOCkgW3N0YWJsZV0KCiAqKiBBIG51bWJlciBvZiBw
b3J0YWJpbGl0eSBpbXByb3ZlbWVudHMgaW5oZXJpdGVkIGZyb20gZ251bGliLCBpbmNsdWRpbmcK
ICAgIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gc3RhY2sgb3ZlcmZsb3cgZGV0ZWN0aW9uIG9uIG1v
cmUgcGxhdGZvcm1zCiAgICB3aXRob3V0IGxpbmtpbmcgdG8gR05VIGxpYnNpZ3NlZ3YuCgorCiAq
IE5vdGV3b3J0aHkgY2hhbmdlcyBpbiByZWxlYXNlIDEuNC4xOGQgKDIwMjEtMDUtMTEpIFtiZXRh
XQoKICoqIEEgbnVtYmVyIG9mIHBvcnRhYmlsaXR5IGltcHJvdmVtZW50cyBpbmhlcml0ZWQgZnJv
bSBnbnVsaWIuCmRpZmYgLS1naXQgYS9jZmcubWsgYi9jZmcubWsKaW5kZXggN2Y1YzAxYWIuLjgx
ZmRjNDU5IDEwMDY0NAotLS0gYS9jZmcubWsKKysrIGIvY2ZnLm1rCkBAIC0zNCw3ICszNCw3IEBA
IGxvY2FsLWNoZWNrcy10by1za2lwICs9IHNjX2Nhc3Rfb2ZfeF9hbGxvY19yZXR1cm5fdmFsdWUK
IGNvbmZpZ19oX2hlYWRlciA9ICJtNFwuaCIKCiAjIEhhc2ggb2YgTkVXUyBjb250ZW50cywgdG8g
ZW5zdXJlIHdlIGRvbid0IGFkZCBlbnRyaWVzIHRvIHdyb25nIHNlY3Rpb24uCi1vbGRfTkVXU19o
YXNoID0gNGU0NTVjZjE2MDQzMDYxYjdmZmUyODlhOWI2MDRmMzMKK29sZF9ORVdTX2hhc2ggPSBi
ZWIwZmUxMTI0ZTExNDhmMDVmYzY0YWJhYzU3ZWZmNQoKICMgVXBkYXRlIG00LWxhdGVzdC50YXIu
KiBzeW1saW5rcyBkdXJpbmcgJ21ha2Ugc3RhYmxlL2JldGEnLgogR05VUExPQURGTEFHUyA9IC0t
c3ltbGluay1yZWdleApkaWZmIC0tZ2l0IGEvZG9jL200LnRleGkgYi9kb2MvbTQudGV4aQppbmRl
eCBlZDE2OWU2OC4uZWY5ODI4Y2MgMTAwNjQ0Ci0tLSBhL2RvYy9tNC50ZXhpCisrKyBiL2RvYy9t
NC50ZXhpCkBAIC00NzQwLDYgKzQ3NDAsMTkgQEAgQ2hhbmdld29yZAogQGVuZCBleGFtcGxlCgog
QGlnbm9yZQorQGNvbW1lbnQgRXhwb3NlIGEgY29yZSBkdW1wIGludHJvZHVjZWQgaW4gMS40LjEx
LgorQGV4YW1wbGUKK2lmZGVmKGBjaGFuZ2V3b3JkJywgYCcsIGBlcnJwcmludChgIHNraXBwaW5n
OiBubyBjaGFuZ2V3b3JkIHN1cHBvcnQKKycpbTRleGl0KGA3NycpJylkbmwKK2RlZmluZShgZm9v
CisnLCBgYmFyCisnKQorQHJlc3VsdHt9CitjaGFuZ2V3b3JkKGBbY2RdW2Etel0qXHxmb29bCitd
Jylmb28KK0ByZXN1bHR7fWZvbworQGVuZCBleGFtcGxlCisKIEBjb21tZW50IE9uZSBtb3JlIHRl
c3Qgb2YgaW5jbHVkaW5nIG5ld2xpbmUgaW4gYSBtYWNybyBuYW1lOyBidXQgdGhpcwogQGNvbW1l
bnQgZG9lcyBub3QgbmVlZCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1hbnVhbC4gIFRoaXMgZW5z
dXJlcwogQGNvbW1lbnQgdGhhdCBsaW5lIG51bWJlcmluZyBpcyBjb3JyZWN0IHdoZW4gZG5sIGN1
dHMgYWNyb3NzIGluY2x1ZGUKZGlmZiAtLWdpdCBhL3NyYy9pbnB1dC5jIGIvc3JjL2lucHV0LmMK
aW5kZXggNzU0YmY0ZWUuLjg2ZTJhYzFlIDEwMDY0NAotLS0gYS9zcmMvaW5wdXQuYworKysgYi9z
cmMvaW5wdXQuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIFNUUklORyBlY29tbTsKCiAjIGRlZmluZSBE
RUZBVUxUX1dPUkRfUkVHRVhQICJbX2EtekEtWl1bX2EtekEtWjAtOV0qIgoKK3N0YXRpYyBjaGFy
IHdvcmRfc3RhcnRbMjU2XTsKIHN0YXRpYyBzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgd29yZF9y
ZWdleHA7CiBzdGF0aWMgaW50IGRlZmF1bHRfd29yZF9yZWdleHA7CiBzdGF0aWMgc3RydWN0IHJl
X3JlZ2lzdGVycyByZWdzOwpAQCAtNzcyLDYgKzc3Myw4IEBAIHNldF9jb21tZW50IChjb25zdCBj
aGFyICpiYywgY29uc3QgY2hhciAqZWMpCiB2b2lkCiBzZXRfd29yZF9yZWdleHAgKGNvbnN0IGNo
YXIgKnJlZ2V4cCkKIHsKKyAgaW50IGk7CisgIGNoYXIgdGVzdFsyXSA9ICIiOwogICBjb25zdCBj
aGFyICptc2c7CiAgIHN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlciBuZXdfd29yZF9yZWdleHA7CgpA
QCAtODA2LDYgKzgwOSwyMCBAQCBzZXRfd29yZF9yZWdleHAgKGNvbnN0IGNoYXIgKnJlZ2V4cCkK
ICAgICBhc3NlcnQgKGZhbHNlKTsKCiAgIGRlZmF1bHRfd29yZF9yZWdleHAgPSBmYWxzZTsKKwor
ICAvKiBUaGUgZmFzdG1hcCBjb250YWlucyBhbnkgYnl0ZSB0aGF0IGNhbiBzdGFydCBhIHdvcmQu
IEJ1dCB3ZSBzdGlsbAorICAgICBuZWVkIHRvIGtub3cgd2hpY2ggYnl0ZXMgY2FuIGJlIG1hdGNo
ZWQgYXMgYSB3b3JkIGluIGlzb2xhdGlvbgorICAgICAoYWx0aG91Z2ggdGhlIGRvY3VtZW50YXRp
b25zIHJlcXVpcmVzIHRoYXQgYWxsIHByZWZpeGVzIG9mIGEKKyAgICAgdXNlcidzIGRlc2lyZWQg
d29yZHMgdG8gYWxzbyBiZSBtYXRjaGVkLCB0aGlzIGNhdGNoZXMgd2hlbiBhIHVzZXIKKyAgICAg
ZGlkIG5vdCBmb2xsb3cgdGhhdCBsaW1pdGF0aW9uKS4gICovCisgIGZvciAoaSA9IDE7IGkgPCAy
NTY7IGkrKykKKyAgICB7CisgICAgICBpZiAod29yZF9yZWdleHAuZmFzdG1hcFtpXSkKKyAgICAg
ICAgeworICAgICAgICAgIHRlc3RbMF0gPSBpOworICAgICAgICAgIHdvcmRfc3RhcnRbaV0gPSBy
ZV9zZWFyY2ggKCZ3b3JkX3JlZ2V4cCwgdGVzdCwgMSwgMCwgMCwgTlVMTCkgPj0gMDsKKyAgICAg
ICAgfQorICAgIH0KIH0KCiAjZW5kaWYgLyogRU5BQkxFX0NIQU5HRVdPUkQgKi8KQEAgLTg5Nyw3
ICs5MTQsNyBAQCBuZXh0X3Rva2VuICh0b2tlbl9kYXRhICp0ZCwgaW50ICpsaW5lKQoKICNpZmRl
ZiBFTkFCTEVfQ0hBTkdFV09SRAoKLSAgZWxzZSBpZiAoIWRlZmF1bHRfd29yZF9yZWdleHAgJiYg
d29yZF9yZWdleHAuZmFzdG1hcFtjaF0pCisgIGVsc2UgaWYgKCFkZWZhdWx0X3dvcmRfcmVnZXhw
ICYmIHdvcmRfc3RhcnRbY2hdKQogICAgIHsKICAgICAgIG9ic3RhY2tfMWdyb3cgKCZ0b2tlbl9z
dGFjaywgY2gpOwogICAgICAgd2hpbGUgKDEpCkBAIC05MTUsNiArOTMyLDkgQEAgbmV4dF90b2tl
biAodG9rZW5fZGF0YSAqdGQsIGludCAqbGluZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgKigoKGNoYXIgKikgb2JzdGFja19iYXNlICgmdG9rZW5fc3RhY2spCiAgICAgICAgICAgICAg
ICAgICsgb2JzdGFja19vYmplY3Rfc2l6ZSAoJnRva2VuX3N0YWNrKSkgLSAxKSA9ICdcMCc7Cisg
ICAgICAgICAgICAgIHJlX3NlYXJjaCAoJndvcmRfcmVnZXhwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIChjaGFyICopIG9ic3RhY2tfYmFzZSAoJnRva2VuX3N0YWNrKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBvYnN0YWNrX29iamVjdF9zaXplICgmdG9rZW5fc3RhY2spIC0gMSwgMCwg
MCwgJnJlZ3MpOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICBuZXh0X2NoYXIgKCk7CkBAIC05MjMsNyArOTQzLDcgQEAgbmV4dF90b2tlbiAodG9rZW5fZGF0
YSAqdGQsIGludCAqbGluZSkKICAgICAgIG9ic3RhY2tfMWdyb3cgKCZ0b2tlbl9zdGFjaywgJ1ww
Jyk7CiAgICAgICBvcmlnX3RleHQgPSAoY2hhciAqKSBvYnN0YWNrX2ZpbmlzaCAoJnRva2VuX3N0
YWNrKTsKCi0gICAgICBpZiAocmVncy5zdGFydFsxXSAhPSAtMSkKKyAgICAgIGlmIChyZWdzLm51
bV9yZWdzICYmIHJlZ3Muc3RhcnRbMV0gIT0gLTEpCiAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJnRv
a2VuX3N0YWNrLCBvcmlnX3RleHQgKyByZWdzLnN0YXJ0WzFdLAogICAgICAgICAgICAgICAgICAg
ICAgIHJlZ3MuZW5kWzFdIC0gcmVncy5zdGFydFsxXSk7CiAgICAgICBlbHNlCkBAIC0xMDU5LDcg
KzEwNzksNyBAQCBwZWVrX3Rva2VuICh2b2lkKQogICAgIH0KICAgZWxzZSBpZiAoKGRlZmF1bHRf
d29yZF9yZWdleHAgJiYgKGNfaXNhbHBoYSAoY2gpIHx8IGNoID09ICdfJykpCiAjaWZkZWYgRU5B
QkxFX0NIQU5HRVdPUkQKLSAgICAgICAgICAgfHwgKCFkZWZhdWx0X3dvcmRfcmVnZXhwICYmIHdv
cmRfcmVnZXhwLmZhc3RtYXBbY2hdKQorICAgICAgICAgICB8fCAoIWRlZmF1bHRfd29yZF9yZWdl
eHAgJiYgd29yZF9zdGFydFtjaF0pCiAjZW5kaWYgLyogRU5BQkxFX0NIQU5HRVdPUkQgKi8KICAg
ICApCiAgICAgewotLSAKMi40OS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTTQtcGF0Y2hlcyBtYWlsaW5nIGxpc3QKTTQtcGF0Y2hlc0BnbnUub3Jn
Cmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL200LXBhdGNoZXMK