Commit 6ec7de1
committed
fix(cpi/hand): use u8 length prefix for String<50> in CPI wire format
The lever's switch_power instruction takes `String<50>`, which Quasar
serialises with a single-byte length prefix (matching every other
Quasar program: account-data, close-account, rent, realloc,
repository-layout). The hand program's pull_lever CPI builder was
manually constructing instruction data with a u32 (4-byte) length
prefix, so every hand→lever CPI call sent a malformed payload. The
breakage was masked because the lever's handler ignored the
deserialised name (`_name`), but the value itself was corrupted —
e.g. "\\0\\0\\0Al" instead of "Alice".
The lever's own tests.rs had the same stale u32 prefix in its
instruction-data builder, and hand's tests.rs had it for inbound
pull_lever data too. Both now use `data.push(name.len() as u8)`,
matching the canonical pattern used across the Quasar example suite.
To keep this from regressing again, the lever now logs the
deserialised name and both test suites assert that the round-tripped
name appears in program logs verbatim ("Alice" / "Bob"). A stale
length prefix on either leg of the CPI would surface immediately as
a corrupted log line.
Files changed:
- hand/src/instructions/pull_lever.rs (CPI builder: u32 → u8)
- hand/src/tests.rs (inbound builder: u32 → u8, name assert)
- lever/src/instructions/switch_power.rs (log name)
- lever/src/tests.rs (test builder: u32 → u8, name assert)1 parent ddea756 commit 6ec7de1
4 files changed
Lines changed: 64 additions & 18 deletions
File tree
- basics/cross-program-invocation/quasar
- hand/src
- instructions
- lever/src
- instructions
Lines changed: 14 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | | - | |
20 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
21 | 29 | | |
22 | 30 | | |
23 | | - | |
| 31 | + | |
24 | 32 | | |
25 | 33 | | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 34 | + | |
32 | 35 | | |
33 | 36 | | |
34 | 37 | | |
35 | | - | |
| 38 | + | |
36 | 39 | | |
37 | 40 | | |
38 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
34 | 40 | | |
35 | | - | |
36 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
37 | 44 | | |
38 | 45 | | |
39 | 46 | | |
| |||
72 | 79 | | |
73 | 80 | | |
74 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
75 | 90 | | |
76 | 91 | | |
77 | 92 | | |
| |||
107 | 122 | | |
108 | 123 | | |
109 | 124 | | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
110 | 129 | | |
111 | 130 | | |
112 | 131 | | |
| |||
Lines changed: 6 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
| 25 | + | |
21 | 26 | | |
22 | 27 | | |
23 | 28 | | |
| |||
Lines changed: 22 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
51 | 59 | | |
52 | | - | |
53 | | - | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
54 | 63 | | |
55 | 64 | | |
56 | 65 | | |
| |||
104 | 113 | | |
105 | 114 | | |
106 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
107 | 122 | | |
108 | 123 | | |
109 | 124 | | |
| |||
128 | 143 | | |
129 | 144 | | |
130 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
131 | 150 | | |
132 | 151 | | |
133 | 152 | | |
| |||
0 commit comments