From 858749628fe584b3cdca2be92628f33770c4ca7d Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 2 Dec 2022 20:21:21 +0100 Subject: [PATCH] Check 3rd party payload for APRS type #428 --- src/pfilter.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pfilter.c b/src/pfilter.c index 9ae3fe8..d7cd0ca 100644 --- a/src/pfilter.c +++ b/src/pfilter.c @@ -869,6 +869,19 @@ static int filt_t (pfstate_t *pf) assert (infop != NULL); + if(*infop == '}') { + // We have a 3d party packet, dig inside it to get the actual type. + packet_t pp_payload = ax25_from_text ((char*)infop+1, 0); + if (pp_payload == NULL) { + print_error (pf, "Invalid third party payload\n"); + return (0); + } + memset (src, 0, sizeof(src)); + ax25_get_addr_with_ssid (pp_payload, AX25_SOURCE, src); + (void) ax25_get_info (pp_payload, (unsigned char **)(&infop)); + ax25_delete(pp_payload); + } + for (f = pf->token_str + 2; *f != '\0'; f++) { switch (*f) {