gh-154726: Fix `shutil.copyfile()` for symlinks to special files with `follow_symlinks=False` (GH-154728)
encukou <[email protected]> Fri, 31 Jul 2026 07:36:23 -0400 (EDT)
| Newsgroups | gmane.comp.python.cvs |
|---|---|
| Message-ID | <[email protected]> |
aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC9mNWFmYTg5NWFlMzIyZWE4 OWM1OTQyYjBiMjEwOTRjMTI0MjkzZGQ4DQpjb21taXQ6IGY1YWZhODk1YWUzMjJlYTg5YzU5NDJi MGIyMTA5NGMxMjQyOTNkZDgNCmJyYW5jaDogbWFpbg0KYXV0aG9yOiDFgXVrYXN6IDxsdWthc3ps YXBpbnNraTdAZ21haWwuY29tPg0KY29tbWl0dGVyOiBlbmN1a291IDxlbmN1a291QGdtYWlsLmNv bT4NCmRhdGU6IDIwMjYtMDctMzFUMTM6MzY6MDUrMDI6MDANCnN1bW1hcnk6DQoNCmdoLTE1NDcy NjogRml4IGBzaHV0aWwuY29weWZpbGUoKWAgZm9yIHN5bWxpbmtzIHRvIHNwZWNpYWwgZmlsZXMg d2l0aCBgZm9sbG93X3N5bWxpbmtzPUZhbHNlYCAoR0gtMTU0NzI4KQ0KDQpmaWxlczoNCkEgTWlz Yy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjYtMDctMjYtMTEtNDUtMzQuZ2gtaXNzdWUtMTU0NzI2 LmhMSms1LS5yc3QNCk0gTGliL3NodXRpbC5weQ0KTSBMaWIvdGVzdC90ZXN0X3NodXRpbC5weQ0K DQpkaWZmIC0tZ2l0IGEvTGliL3NodXRpbC5weSBiL0xpYi9zaHV0aWwucHkNCmluZGV4IDZhMmUy YjJmZmRhZTJjLi45NDYxN2VjMjk2ZjUwOCAxMDA2NDQNCi0tLSBhL0xpYi9zaHV0aWwucHkNCisr KyBiL0xpYi9zaHV0aWwucHkNCkBAIC0yOTIsOCArMjkyLDExIEBAIGRlZiBjb3B5ZmlsZShzcmMs IGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOg0KICAgICBpZiBfc2FtZWZpbGUoc3JjLCBk c3QpOg0KICAgICAgICAgcmFpc2UgU2FtZUZpbGVFcnJvcigieyFyfSBhbmQgeyFyfSBhcmUgdGhl IHNhbWUgZmlsZSIuZm9ybWF0KHNyYywgZHN0KSkNCiANCisgICAgY29weV9zeW1saW5rID0gbm90 IGZvbGxvd19zeW1saW5rcyBhbmQgX2lzbGluayhzcmMpDQogICAgIGZpbGVfc2l6ZSA9IDANCiAg ICAgZm9yIGksIGZuIGluIGVudW1lcmF0ZShbc3JjLCBkc3RdKToNCisgICAgICAgIGlmIGNvcHlf c3ltbGluayBhbmQgaSA9PSAwOg0KKyAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICB0cnk6 DQogICAgICAgICAgICAgc3QgPSBfc3RhdChmbikNCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOg0K QEAgLTMxNSw3ICszMTgsNyBAQCBkZWYgY29weWZpbGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1s aW5rcz1UcnVlKToNCiAgICAgICAgICAgICBpZiBfV0lORE9XUyBhbmQgaSA9PSAwOg0KICAgICAg ICAgICAgICAgICBmaWxlX3NpemUgPSBzdC5zdF9zaXplDQogDQotICAgIGlmIG5vdCBmb2xsb3df c3ltbGlua3MgYW5kIF9pc2xpbmsoc3JjKToNCisgICAgaWYgY29weV9zeW1saW5rOg0KICAgICAg ICAgb3Muc3ltbGluayhvcy5yZWFkbGluayhzcmMpLCBkc3QpDQogICAgIGVsc2U6DQogICAgICAg ICB3aXRoIG9wZW4oc3JjLCAncmInKSBhcyBmc3JjOg0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rl c3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkNCmluZGV4IDY4MzJiZWEwOTRm YzFkLi5lZDVkMTVlY2M3ZGRhZCAxMDA2NDQNCi0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5 DQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQ0KQEAgLTE1NzQsNiArMTU3NCw0NyBAQCBk ZWYgdGVzdF9jb3B5ZmlsZV9zb2NrZXQoc2VsZik6DQogICAgICAgICBzZWxmLmFzc2VydFJhaXNl c1JlZ2V4KHNodXRpbC5TcGVjaWFsRmlsZUVycm9yLCAnaXMgYSBzb2NrZXQnLA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUsIF9fZmlsZV9fLCBzb2NrX3Bh dGgpDQogDQorICAgIGRlZiBfY2hlY2tfY29weWZpbGVfc3ltbGlua190b19zcGVjaWFsX2ZpbGUo c2VsZiwgdGFyZ2V0KToNCisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQ0KKyAgICAg ICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdzcmMnKQ0KKyAgICAgICAgZHN0ID0gb3Mu cGF0aC5qb2luKHRtcF9kaXIsICdkc3QnKQ0KKyAgICAgICAgb3Muc3ltbGluayh0YXJnZXQsIHNy YykNCisNCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtz PUZhbHNlKQ0KKw0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdCkp DQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIHRhcmdldCkNCisN CisgICAgQG9zX2hlbHBlci5za2lwX3VubGVzc19zeW1saW5rDQorICAgIEB1bml0dGVzdC5za2lw VW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvZGV2L251bGwnKSwgJ3JlcXVpcmVzIC9kZXYvbnVsbCcp DQorICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3N5bWxpbmtfdG9fY2hhcmFjdGVyX2RldmljZShzZWxm KToNCisgICAgICAgIHNlbGYuX2NoZWNrX2NvcHlmaWxlX3N5bWxpbmtfdG9fc3BlY2lhbF9maWxl KCcvZGV2L251bGwnKQ0KKw0KKyAgICBAb3NfaGVscGVyLnNraXBfdW5sZXNzX3N5bWxpbmsNCisg ICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgIm1rZmlmbyIpLCAncmVxdWlyZXMg b3MubWtmaWZvKCknKQ0KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAidnh3 b3JrcyIsDQorICAgICAgICAgICAgICAgICAgICAiZmlmbyByZXF1aXJlcyBzcGVjaWFsIHBhdGgg b24gVnhXb3JrcyIpDQorICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3N5bWxpbmtfdG9fbmFtZWRfcGlw ZShzZWxmKToNCisgICAgICAgIGZpZm9fcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAo KSwgJ2ZpZm8nKQ0KKyAgICAgICAgdHJ5Og0KKyAgICAgICAgICAgIG9zLm1rZmlmbyhmaWZvX3Bh dGgpDQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGU6DQorICAgICAgICAgICAg c2VsZi5za2lwVGVzdCgnb3MubWtmaWZvKCk6ICVzJyAlIGUpDQorICAgICAgICBzZWxmLl9jaGVj a19jb3B5ZmlsZV9zeW1saW5rX3RvX3NwZWNpYWxfZmlsZShmaWZvX3BhdGgpDQorDQorICAgIEBv c19oZWxwZXIuc2tpcF91bmxlc3Nfc3ltbGluaw0KKyAgICBAc29ja2V0X2hlbHBlci5za2lwX3Vu bGVzc19iaW5kX3VuaXhfc29ja2V0DQorICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3N5bWxpbmtfdG9f c29ja2V0KHNlbGYpOg0KKyAgICAgICAgc29ja19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYubWtk dGVtcCgpLCAnc29jaycpDQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZf VU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQ0KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2su Y2xvc2UpDQorICAgICAgICB0cnk6DQorICAgICAgICAgICAgc29ja2V0X2hlbHBlci5iaW5kX3Vu aXhfc29ja2V0KHNvY2ssIHNvY2tfcGF0aCkNCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6 DQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdChmJ2Nhbm5vdCBiaW5kIEFGX1VOSVggc29ja2V0 OiB7ZX0nKQ0KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zX2hlbHBlci51bmxpbmssIHNvY2tf cGF0aCkNCisgICAgICAgIHNlbGYuX2NoZWNrX2NvcHlmaWxlX3N5bWxpbmtfdG9fc3BlY2lhbF9m aWxlKHNvY2tfcGF0aCkNCisNCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlz dHMoJy9kZXYvbnVsbCcpLCAncmVxdWlyZXMgL2Rldi9udWxsJykNCiAgICAgZGVmIHRlc3RfY29w eWZpbGVfY2hhcmFjdGVyX2RldmljZShzZWxmKToNCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz UmVnZXgoc2h1dGlsLlNwZWNpYWxGaWxlRXJyb3IsICdpcyBhIGNoYXJhY3RlciBkZXZpY2UnLA0K ZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDI2LTA3LTI2LTExLTQ1LTM0 LmdoLWlzc3VlLTE1NDcyNi5oTEprNS0ucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIw MjYtMDctMjYtMTEtNDUtMzQuZ2gtaXNzdWUtMTU0NzI2LmhMSms1LS5yc3QNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMC4uNzNjZjQwYTcyMDc3NDMNCi0tLSAvZGV2 L251bGwNCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDI2LTA3LTI2LTExLTQ1LTM0 LmdoLWlzc3VlLTE1NDcyNi5oTEprNS0ucnN0DQpAQCAtMCwwICsxLDMgQEANCitGaXggOmZ1bmM6 YHNodXRpbC5jb3B5ZmlsZWAgdG8gY29weSBhIHN5bWJvbGljIGxpbmsgdG8gYSBzcGVjaWFsIGZp bGUgd2hlbg0KK2BgZm9sbG93X3N5bWxpbmtzPUZhbHNlYGAgaW5zdGVhZCBvZiByYWlzaW5nDQor OmV4YzpgfnNodXRpbC5TcGVjaWFsRmlsZUVycm9yYC4NCg0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KUHl0aG9uLWNoZWNraW5zIG1haWxpbmcgbGlzdCAt LSBweXRob24tY2hlY2tpbnNAcHl0aG9uLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWls IHRvIHB5dGhvbi1jaGVja2lucy1sZWF2ZUBweXRob24ub3JnCmh0dHBzOi8vbWFpbC5weXRob24u b3JnL21haWxtYW4zLy9saXN0cy9weXRob24tY2hlY2tpbnMucHl0aG9uLm9yZwpNZW1iZXIgYWRk cmVzczogcHl0aG9uLXB5dGhvbi1jaGVja2luc0BtLmdtYW5lLW14Lm9yZwo=