MylesBorins/node-osc

Cannot read properties of undefined (reading 'elements')

alex-Arc opened this issue · 6 comments

If the incoming message is malformed or from some senders has no args
then line 34 in Server.mjs seams to throw
if the if else statement is moved inside the try we can catch it instead of throwing
image

but the real issue seams to stem from decode.mjs
where the case of a successful decode but without oscType will cause a void return

@alex-Arc can you share some reproducible examples of this behaviour and what would be expected?

It would appear that in the scenarios you are referencing that decoded itself is malformed and then causing this.emit to throw... which I'm unable to reproduce.

Before moving things around I want to make sure I understand the edge case and am handling the error appropriately

hi @MylesBorins I'm happy to
just to sanity check this should be a good packet

plain:
/ontime/change/aa42f/title [no args]

ASCII:
/ontime/change/aa42f/title\00\00,\00\00\00

HEX:
2F 6F 6E 74 69 6D 65 2F 63 68 61 6E 67 65 2F 61 61 34 32 66 2F 74 69 74 6C 65 00 00 2C 00 00 00

if the packet gets malformed in transit or is sent by a program like TouchDesigner
the trailing 00 terminators for the args are missing

ASCII:
/ontime/change/aa42f/title\00\00

HEX:
2F 6F 6E 74 69 6D 65 2F 63 68 61 6E 67 65 2F 61 61 34 32 66 2F 74 69 74 6C 65 00 00 

@alex-Arc do you have a way for me to reproduce this bad packet being sent?

@MylesBorins Hey
I set up a fuzzing test https://github.com/alex-Arc/node-osc-test
and it immediately crashed
but adding an final else will catch everything
and even better setting the strict flag on fromBuffer will passe up good error messages that is then passes to the event emitter on error
image

Thanks for all the details. I've shipped a fix and am releasing a new version right now.