segfault with areas

John Goerzen
2021-08-07T21:14:03Z

Hi Sergey,

I am wanting to set up an area where only one node is authorized
to create packets bound for it, but a bunch of nodes can receive
those packets. I thought I might do so by distributing the prv
line of the area to every node, but keeping the pub line to only
the node authorized to send. It is a bit counter-intuitive to how
one normally shares the keys, but in this case what I'm trying to
do is set up an automatic distribution of the nodelist and I want
it to occur from onlyh a trusted source, and the file itself isn't
particularly sensitive.

I believe this is working as intended and I would like the
behavior to remain.

In testing, I thought "what would happen if I try to nncp-exec
area:nodelist newnodelist on a box that doesn't have the pub line
for the area?" I expected an error. Got a segfault instead:

[signal SIGSEGV: segmentation violation code=0x1 addr=0x0
pc=0x5ca1cb]

goroutine 11 [running]:
go.cypherpunks.ru/nncp/v7.(*Ctx).Tx.func2(0xc000116f00,
0xc00001d200, 0x60, 0xc000019420, 0xc000166240, 0xc00001a1e0,
0xc00001a180, 0x12, 0x0, 0x65c8a0, ...)
/home/nncp/nncp-7.5.0/src/tx.go:139 +0x2cb
created by go.cypherpunks.ru/nncp/v7.(*Ctx).Tx
/home/nncp/nncp-7.5.0/src/tx.go:124 +0x538

This is on v7.5.0.

I think the overall behavior is correct - it should be able to
receive but not send if it has only prv, to send but not receive
if it has only pub, both if it has both, and neither if it has
neither - but probably the segfault wasn't what was intended.

Thanks!

- John