)]}'
{"id":"openstack%2Fswift~989513","triplet_id":"openstack%2Fswift~master~I9610d777d55c1f96ba8eeb325f04d4210907daca","project":"openstack/swift","branch":"master","attention_set":{},"removed_from_attention_set":{"6968":{"account":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"last_update":"2026-05-28 15:27:01.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I9610d777d55c1f96ba8eeb325f04d4210907daca","subject":"Add unit tests for hardened pickle unmarshalling","status":"ABANDONED","created":"2026-05-21 11:42:52.000000000","updated":"2026-05-28 15:27:01.000000000","total_comment_count":9,"unresolved_comment_count":6,"has_review_started":true,"meta_rev_id":"05016aefadeeab4f34dc0d59d9a7fcf0832e4647","_number":989513,"virtual_id_number":989513,"owner":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-05-21 12:55:38.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":2,"date":"2026-05-22 15:39:42.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-05-26 23:07:12.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":1,"date":"2026-05-22 15:39:42.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-05-21 12:55:38.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-05-22 15:39:42.000000000","updated_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"REVIEWER"},{"updated":"2026-05-26 23:07:12.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"}],"messages":[{"id":"a6c604cc0d7031fd59c1d864c14bc8125fce69ea","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-05-21 11:42:52.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"1c114c59743cedb5619e528646180fff73116c3e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-05-21 11:50:30.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"cfeed81b4e299701dcba2ba231990168faa84398","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 12:55:38.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c0019f22cb8c4680962ea18811bf2f96\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0cd9e5391aed44d1b8f33b72e30e6ae3 : SUCCESS in 5m 45s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ee6d85e6e6e7473fb64a5993b66bbf81 : SUCCESS in 3m 20s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/3350b5beb45a409cb483ba3c807bc41b : SUCCESS in 11m 11s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6cf58bd6e5504b0fafca2a6a08581e2f : SUCCESS in 20m 36s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6fb1e15e76da4dafbb3ed2b7a4de5c7d : SUCCESS in 21m 48s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/e5687b94f0024faeaba70aeb94eaceaa : SUCCESS in 8m 30s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/afb7632d39cd4f63ac95c9c75d8fadd4 : SUCCESS in 12m 44s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/d7a094d345b647739b9c9e59b47d6fd7 : SUCCESS in 21m 14s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/f425e987d8374a43aeeabf3d43fd927c : SUCCESS in 12m 57s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/dc410612c2804ec0a2895172465a9f15 : SUCCESS in 9m 32s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/5f714671f8c44fa69a54ecd87ab9deaa : SUCCESS in 15m 53s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/1430d9b216f64ab1b6f68f09e6e5974d : SUCCESS in 15m 05s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/06f854d4f369429981e92bb2ba69ab4c : SUCCESS in 8m 36s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/12beb588a3464a74aee348bc7a82e185 : SUCCESS in 54m 47s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/78f72f024af7470ab6fb7102f3eab2b3 : SUCCESS in 1h 00m 47s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/467f43d003714277aad4c1bc5f6e6da0 : SUCCESS in 23m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/24da1015c664496aa2169db4b664fbe1 : SUCCESS in 3m 44s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/300abd2f2a5f4b3a870c32800c589689 : SUCCESS in 9m 27s","accounts_in_message":[],"_revision_number":2},{"id":"18ba2875533d2a5de5ca4e4a5431e05cf8fc8767","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 13:25:06.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7ed3a13fe5654313bc303b0f1eb7e3aa\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/8c806c18181542d8b1bc1aa11810b023 : SUCCESS in 1h 06m 02s","accounts_in_message":[],"_revision_number":2},{"id":"88e45d1852e17dfe79428192150fee758e996907","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-05-22 15:39:42.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1\n\n(4 comments)","accounts_in_message":[],"_revision_number":2},{"id":"3b9ce053cde6d4f2afea09afa9160ddd3f62a477","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-05-22 15:40:07.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"1a0d1d73e7033f1506c93b4457ec2e8e14494970","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-05-26 23:07:12.000000000","message":"Patch Set 2: Code-Review+1\n\n(4 comments)","accounts_in_message":[],"_revision_number":2},{"id":"05016aefadeeab4f34dc0d59d9a7fcf0832e4647","tag":"autogenerated:gerrit:abandon","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-05-28 15:27:01.000000000","message":"Abandoned\n\nSquashed into parent. Thanks!","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"ca4d98bde9c4dad244d84fa8db429f1812668557","revisions":{"336db9428723f9cef0abfea28c7e0d5ba6b2f368":{"kind":"REWORK","_number":1,"created":"2026-05-21 11:42:52.000000000","uploader":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"ref":"refs/changes/13/989513/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/13/989513/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/13/989513/1"}}},"commit":{"parents":[{"commit":"8d63fbf96945b79868724e246cc38a6a0177e887","subject":"Harden pickle unmarshalling","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8d63fbf96945b79868724e246cc38a6a0177e887"}]}],"author":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-05-21 07:16:51.000000000","tz":120},"committer":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-05-21 11:40:26.000000000","tz":120},"subject":"Add unit tests for hardened pickle unmarshalling","message":"Add unit tests for hardened pickle unmarshalling\n\nTests for the new swift.common.utils.pickle module:\n\n- unpickle() refuses malicious payloads (os.system, subprocess.Popen,\n  eval, __import__, list, and unrelated swift classes)\n- write_pickle() output is loadable by unpickle()\n- unpickle() loads the allowlisted types (dict, bytes, HeaderKeyDict)\n  back to equal values, at both pickle protocol 0 and the default\n- unpickle() with encoding\u003d\u0027bytes\u0027 loads py2-style pickles — the\n  path diskfile uses to read xattrs and async_pending files written\n  by older Swift clusters running on Python 2 (lp#1678018)\n\nRelated-Bug: #2152384\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I9610d777d55c1f96ba8eeb325f04d4210907daca\nSigned-off-by: Christian Schwede \u003ccschwede@mailbox.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/336db9428723f9cef0abfea28c7e0d5ba6b2f368"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/336db9428723f9cef0abfea28c7e0d5ba6b2f368"}]},"branch":"refs/heads/master"},"ca4d98bde9c4dad244d84fa8db429f1812668557":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-05-21 11:50:30.000000000","uploader":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"ref":"refs/changes/13/989513/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/13/989513/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/13/989513/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/13/989513/2"}}},"commit":{"parents":[{"commit":"89161efd633131ee3e5266e29203cb06d089fdb2","subject":"Harden pickle unmarshalling","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/89161efd633131ee3e5266e29203cb06d089fdb2"}]}],"author":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-05-21 07:16:51.000000000","tz":120},"committer":{"name":"Christian Schwede","email":"cschwede@mailbox.org","date":"2026-05-21 11:50:23.000000000","tz":120},"subject":"Add unit tests for hardened pickle unmarshalling","message":"Add unit tests for hardened pickle unmarshalling\n\nTests for the new swift.common.utils.pickle module:\n\n- unpickle() refuses malicious payloads (os.system, subprocess.Popen,\n  eval, __import__, list, and unrelated swift classes)\n- write_pickle() output is loadable by unpickle()\n- unpickle() loads the allowlisted types (dict, bytes, HeaderKeyDict)\n  back to equal values, at both pickle protocol 0 and the default\n- unpickle() with encoding\u003d\u0027bytes\u0027 loads py2-style pickles — the\n  path diskfile uses to read xattrs and async_pending files written\n  by older Swift clusters running on Python 2 (lp#1678018)\n\nRelated-Bug: #2152384\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I9610d777d55c1f96ba8eeb325f04d4210907daca\nSigned-off-by: Christian Schwede \u003ccschwede@mailbox.org\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ca4d98bde9c4dad244d84fa8db429f1812668557"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ca4d98bde9c4dad244d84fa8db429f1812668557"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
