review and fix string vs. bytes handling in cast
#669
Labels
C-cast
Command: cast
D-easy
Difficulty: easy
first issue
A good way to start contributing
P-normal
Priority: normal
T-debt
Type: code debt
T-to-reproduce
Type: requires reproduction
Milestone
Component
Cast
Have you ensured that all of these are up to date?
What version of Foundry are you on?
cast 0.1.0 (fe2dbfe 2022-02-04T00:24:58.188894+00:00)
What command(s) is the bug in?
cast keccak
and possibly othersOperating System
macOS (amd)
Describe the bug
Right now,
cast keccak
does not handle strings vs. bytes correctly, which @SusheendharVijay first noticed when implementingcast index
as part of #29.The correct way to handle input to
cast keccak <data>
is:<data>
has a 0x prefix, read it as hexdata. Multiple hexstrings can be concatenated with:
<data>
has no 0x prefix, read it as textInstead, we currently treat all input as text and convert it to bytes, which is incorrect. seth and ethers.js use the behavior above
This makes me concerned that there may be other commands where we don't distinguish between text vs. bytes inputs correctly, so the scope of this issue is:
For example, if we had a keccak doctest of
assert_eq!(Cast::keccak("0x1234")?, "0x56570de287d73cd1cb6092bb8fdee6173974955fdef345ae579ee9f475ea7432");
, we would have noticed this error soonerThe text was updated successfully, but these errors were encountered: