From 222a041e9d8885d8977fdc84e27ea9c656b3a6b0 Mon Sep 17 00:00:00 2001 From: marinelay Date: Tue, 16 Apr 2024 16:03:09 +0900 Subject: [PATCH 1/5] Change from pop to keys for reporting proper error message --- pwnlib/util/fiddling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/util/fiddling.py b/pwnlib/util/fiddling.py index 2b7ec7296..d96d7cb56 100644 --- a/pwnlib/util/fiddling.py +++ b/pwnlib/util/fiddling.py @@ -327,7 +327,7 @@ def xor(*args, **kwargs): cut = kwargs.pop('cut', 'max') if kwargs != {}: - raise TypeError("xor() got an unexpected keyword argument '%s'" % kwargs.pop()[0]) + raise TypeError("xor() got an unexpected keyword argument '%s'" % list(kwargs.keys())[0]) if len(args) == 0: raise ValueError("Must have something to xor") From e0021be05d9a31802013d5421113353ebcc824ba Mon Sep 17 00:00:00 2001 From: marinelay Date: Tue, 16 Apr 2024 16:04:51 +0900 Subject: [PATCH 2/5] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fb9e31d1..b37d10aa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,6 +77,7 @@ The table below shows which release corresponds to each branch, and what date th - [#2327][2327] Add basic support to debug processes on Windows - [#2322][2322] Add basic RISCV64 shellcraft support - [#2330][2330] Change `context.newline` when setting `context.os` to `"windows"` +- [#2391][2391] Change from `pop` to `keys` for reporting proper error message [2360]: https://github.com/Gallopsled/pwntools/pull/2360 [2356]: https://github.com/Gallopsled/pwntools/pull/2356 @@ -84,6 +85,7 @@ The table below shows which release corresponds to each branch, and what date th [2327]: https://github.com/Gallopsled/pwntools/pull/2327 [2322]: https://github.com/Gallopsled/pwntools/pull/2322 [2330]: https://github.com/Gallopsled/pwntools/pull/2330 +[2391]: https://github.com/Gallopsled/pwntools/pull/2391 ## 4.13.0 (`beta`) From 26f9b788a693dde4aaa955284eca9d90bdf29270 Mon Sep 17 00:00:00 2001 From: marinelay Date: Wed, 17 Apr 2024 17:00:26 +0900 Subject: [PATCH 3/5] add doctest for xor --- pwnlib/util/fiddling.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pwnlib/util/fiddling.py b/pwnlib/util/fiddling.py index d96d7cb56..e4b0b5af4 100644 --- a/pwnlib/util/fiddling.py +++ b/pwnlib/util/fiddling.py @@ -322,6 +322,10 @@ def xor(*args, **kwargs): Example: >>> xor(b'lol', b'hello', 42) b'. ***' + >>> xor(cut = 'min', other = '') + Traceback (most recent call last): + ... + TypeError: xor() got an unexpected keyword argument 'other' """ cut = kwargs.pop('cut', 'max') From 5e5cf4fa1c9595d2efb0fd856b325561ba728926 Mon Sep 17 00:00:00 2001 From: Peace-Maker Date: Wed, 17 Apr 2024 13:48:50 +0200 Subject: [PATCH 4/5] Add newline to run xor doctests --- pwnlib/util/fiddling.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pwnlib/util/fiddling.py b/pwnlib/util/fiddling.py index e4b0b5af4..4de12febf 100644 --- a/pwnlib/util/fiddling.py +++ b/pwnlib/util/fiddling.py @@ -320,6 +320,7 @@ def xor(*args, **kwargs): The string of the arguments xor'ed together. Example: + >>> xor(b'lol', b'hello', 42) b'. ***' >>> xor(cut = 'min', other = '') From dce8def088c6b56641ba4c0b949bce302fd73310 Mon Sep 17 00:00:00 2001 From: Peace-Maker Date: Sun, 21 Apr 2024 22:12:02 +0200 Subject: [PATCH 5/5] Switch to `dict.popitem()` --- CHANGELOG.md | 2 +- pwnlib/util/fiddling.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b37d10aa3..f7a4b6f38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,7 +77,7 @@ The table below shows which release corresponds to each branch, and what date th - [#2327][2327] Add basic support to debug processes on Windows - [#2322][2322] Add basic RISCV64 shellcraft support - [#2330][2330] Change `context.newline` when setting `context.os` to `"windows"` -- [#2391][2391] Change from `pop` to `keys` for reporting proper error message +- [#2391][2391] Fix error message when passing invalid kwargs to `xor` [2360]: https://github.com/Gallopsled/pwntools/pull/2360 [2356]: https://github.com/Gallopsled/pwntools/pull/2356 diff --git a/pwnlib/util/fiddling.py b/pwnlib/util/fiddling.py index 4de12febf..ccad12e04 100644 --- a/pwnlib/util/fiddling.py +++ b/pwnlib/util/fiddling.py @@ -332,7 +332,7 @@ def xor(*args, **kwargs): cut = kwargs.pop('cut', 'max') if kwargs != {}: - raise TypeError("xor() got an unexpected keyword argument '%s'" % list(kwargs.keys())[0]) + raise TypeError("xor() got an unexpected keyword argument '%s'" % kwargs.popitem()[0]) if len(args) == 0: raise ValueError("Must have something to xor")