You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tree:
76813d6f90
bump-pyln-proto
confirmed-only
connected_hook
docs
exclude-equal-hint
fee-tracking2
fix-benchmarks
fix-mocks
fix-test_pay_direct-flake
fixup-0.9.0
htlc_accepted_hook
issue-2080
issue-2504
json-streaming
keysend
master
mpp
nifty/pset-pre
patch-1
paymod-01
paymod-02
paymod-03
paymod-04
plugin-1
plugin-2
plugin-3
plugin-6
plugin-7
plugin-timeout-inc
ppa
ppa-0.6.1
ppa-0.6.2rc1
ppa-prep
ppa-v0.9.2
pr-2218
pr-2355-addendum
pr-2391
pr-2587
pull/2803/head
pull/2938/head
pylightning-async
pyln
register-keysend-plugin
release-0.9.0
release-0.9.0rc3
route-mem-overrun
routehint-order
sanitizers
sendonion-msatoshi
test-pay-routeboost
travis-debug
travis-experimental
travis-test
trytravis
v0.9.0.1
add-PR3363-and-PR3372
azure0.1
basedon-aeafe4dbe7d5c61f664c18417698866b0d70252f
bolt11-demo
cp-head
demo_09052017
gossip-rewrite-prebase
htlc_accepted_replay
issue-2491-checkpoint-1
list
multi-db-pre-reoder-20190821
onion-rpc-1573494123
onion-rpc-1573497614
patch-09-reviewed
plugin-2-deadend
plugin-5-prebase-1
plugin-7-a
pr-3316
pr-3321
pr-3329
pr-3335
pr-3340
pre-rebase-01
prebase-20190726
prebrase-2019010301
rebase-top
sphinx-hop-data-head
sphinx-reply-v0
subd-request-muxing-prebase
test
test1
trackblocks-20180303
undo
v0.0.0.20
v0.0.0.20-bench
v0.0.0.20-dev
v0.0.0.21
v0.0.0.21-bench
v0.0.0.21-dev
v0.0.0.22
v0.0.0.22-bench
v0.0.0.22-dev
v0.1-2015-08-08
v0.2-2016-01-22
v0.3-2016-05-26
v0.4-2016-08-19
v0.5-2016-10-19
v0.5.1-2016-10-21
v0.5.2-2016-11-21
v0.6
v0.6.1
v0.6.1rc1
v0.6.1rc2
v0.6.2
v0.6.2rc1
v0.6.3
v0.6.3rc1
v0.6rc1
v0.6rc2
v0.7.0
v0.7.0rc1
v0.7.0rc2
v0.7.0rc3
v0.7.1
v0.7.1rc1
v0.7.1rc2
v0.7.1rc3
v0.7.1rc4
v0.7.1rc5
v0.7.2
v0.7.2.1
v0.7.2rc1
v0.7.2rc2
v0.7.3
v0.7.3rc1
v0.7.3rc2
v0.7.3rc3
v0.8.0
v0.8.0rc1
v0.8.0rc2
v0.8.1
v0.8.1rc1
v0.8.1rc2
v0.8.1rc3
v0.8.2
v0.8.2.1
v0.8.2rc1
v0.8.2rc2
v0.8.2rc3
v0.9.0
v0.9.0-1
v0.9.0.1
v0.9.0rc1
v0.9.0rc2
v0.9.0rc3
v0.9.0rc4
v0.9.1
v0.9.1rc1
v0.9.1rc2
v0.9.2
v0.9.2rc1
v0.9.2rc2
v0.9.3
v0.9.3rc1
v0.9.3rc2
variant-pyunittests
where-the-500-went
${ noResults }
Rusty Russell
76813d6f90
Code like this is suspicious: subtype_varsize_struct->field_0 = *fromwire_test_features(subtype_varsize_struct, cursor, plen); In fact, it is a memory leak since we copy and don't free the fromwire result. Really, field_0 should be a pointer. We don't hit this case (yet!) in spec-generated code, but I did for bolt13. Here's the difference in gen_test output: ```patch diff -ur /tmp/before/test/gen_test.c /tmp/after/test/gen_test.c --- /tmp/before/test/gen_test.c 2020-05-07 16:23:31.651611235 +0930 +++ /tmp/after/test/gen_test.c 2020-05-07 16:20:54.232574482 +0930 @@ -214,12 +214,12 @@ static void towire_subtype_varsize_struct(u8 **p, const struct subtype_varsize_struct *subtype_varsize_struct) { - towire_test_features(p, &subtype_varsize_struct->field_0); + towire_test_features(p, subtype_varsize_struct->field_0); } static void fromwire_subtype_varsize_struct(const u8 **cursor, size_t *plen, struct subtype_varsize_struct *subtype_varsize_struct) { - subtype_varsize_struct->field_0 = *fromwire_test_features(subtype_varsize_struct, cursor, plen); + subtype_varsize_struct->field_0 = fromwire_test_features(subtype_varsize_struct, cursor, plen); } /* SUBTYPE: SUBTYPE_VAR_LEN */ @@ -373,7 +373,7 @@ ptr = tal_arr(ctx, u8, 0); - towire_test_features(&ptr, &r->tlv3->features); + towire_test_features(&ptr, r->tlv3->features); towire_amount_msat(&ptr, r->tlv3->amount_msat_1); @@ -385,7 +385,7 @@ struct tlv_test_n1 *r = vrecord; r->tlv3 = tal(r, struct tlv_test_n1_tlv3); - r->tlv3->features = *fromwire_test_features(r->tlv3, cursor, plen); + r->tlv3->features = fromwire_test_features(r->tlv3, cursor, plen); r->tlv3->amount_msat_1 = fromwire_amount_msat(cursor, plen); r->tlv3->amount_msat_2 = fromwire_amount_msat(cursor, plen); } @@ -824,11 +824,11 @@ towire_test_short_id(&ptr, &r->tlv3->subtype); - towire_subtype_var_len(&ptr, &r->tlv3->varlen_subtype); + towire_subtype_var_len(&ptr, r->tlv3->varlen_subtype); - towire_subtype_var_assign(&ptr, &r->tlv3->varlen_assigned); + towire_subtype_var_assign(&ptr, r->tlv3->varlen_assigned); - towire_subtype_varlen_varsize(&ptr, &r->tlv3->test_sbt_varlen_varsize); + towire_subtype_varlen_varsize(&ptr, r->tlv3->test_sbt_varlen_varsize); for (size_t i = 0; i < 2; i++) towire_u32(&ptr, r->tlv3->arr_assign[i]); @@ -868,9 +868,9 @@ r->tlv3 = tal(r, struct tlv_test_n3_tlv3); fromwire_test_short_id(cursor, plen, &r->tlv3->subtype); - r->tlv3->varlen_subtype = *fromwire_subtype_var_len(r->tlv3, cursor, plen); - r->tlv3->varlen_assigned = *fromwire_subtype_var_assign(r->tlv3, cursor, plen); - r->tlv3->test_sbt_varlen_varsize = *fromwire_subtype_varlen_varsize(r->tlv3, cursor, plen); + r->tlv3->varlen_subtype = fromwire_subtype_var_len(r->tlv3, cursor, plen); + r->tlv3->varlen_assigned = fromwire_subtype_var_assign(r->tlv3, cursor, plen); + r->tlv3->test_sbt_varlen_varsize = fromwire_subtype_varlen_varsize(r->tlv3, cursor, plen); for (size_t i = 0; i < 2; i++) { u32 tmp; tmp = fromwire_u32(cursor, plen); diff -ur /tmp/before/test/gen_test.h /tmp/after/test/gen_test.h --- /tmp/before/test/gen_test.h 2020-05-07 16:23:30.399617108 +0930 +++ /tmp/after/test/gen_test.h 2020-05-07 16:20:52.912584680 +0930 @@ -45,7 +45,7 @@ struct test_short_id field_1; }; struct subtype_varsize_struct { - struct test_features field_0; + struct test_features *field_0; }; struct subtype_var_len { struct test_short_id *field_2; @@ -60,15 +60,15 @@ struct test_short_id field3[2]; }; struct tlv_test_n1_tlv3 { - struct test_features features; + struct test_features *features; struct amount_msat amount_msat_1; struct amount_msat amount_msat_2; }; struct tlv_test_n3_tlv3 { struct test_short_id subtype; - struct subtype_var_len varlen_subtype; - struct subtype_var_assign varlen_assigned; - struct subtype_varlen_varsize test_sbt_varlen_varsize; + struct subtype_var_len *varlen_subtype; + struct subtype_var_assign *varlen_assigned; + struct subtype_varlen_varsize *test_sbt_varlen_varsize; /* array assigtest_nable */ u32 arr_assign[2]; /* array structs */ Binary files /tmp/before/test/gen_test.o and /tmp/after/test/gen_test.o differ Binary files /tmp/before/test/run-test-wire and /tmp/after/test/run-test-wire differ Binary files /tmp/before/test/run-test-wire.o and /tmp/after/test/run-test-wire.o differ ``` Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> |
4 years ago | |
---|---|---|
.. | ||
header_template | tools/generate-wire.py: fix varsize assignment. | 4 years ago |
impl_template | tools/generate-wire.py: fix varsize assignment. | 4 years ago |
print_header_template | tools: fix comment in template. | 4 years ago |
print_impl_template | tools: fix comment in template. | 4 years ago |