From fff53e9b748d2fdcbde2100cffad5d56910c4c91 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Mon, 24 Mar 2025 21:57:35 +0100 Subject: [PATCH] disallow pis starting with 0 --- src/ascii_cmd.c | 7 ++++++- src/lib.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ascii_cmd.c b/src/ascii_cmd.c index 96d91b4..c3008d9 100644 --- a/src/ascii_cmd.c +++ b/src/ascii_cmd.c @@ -94,7 +94,12 @@ static void handle_ta(char *arg, RDSModulator* mod, char* output) { } static void handle_pi(char *arg, RDSModulator* mod, char* output) { - mod->enc->data[mod->enc->program].pi = strtoul(arg, NULL, 16); + uint16_t pi_value = strtoul(arg, NULL, 16); + if ((pi_value & 0xF000) == 0) { + strcpy(output, "-\0"); + return; + } + mod->enc->data[mod->enc->program].pi = pi_value; strcpy(output, "+\0"); } diff --git a/src/lib.c b/src/lib.c index 62dcd1f..f4a851c 100644 --- a/src/lib.c +++ b/src/lib.c @@ -28,7 +28,7 @@ void add_checkwords(uint16_t *blocks, uint8_t *bits, uint8_t stream) { uint16_t offset_word; bool group_type_b = IS_TYPE_B(blocks); - bool rds2_tunneling = (((bool)(blocks[0] & 0xFE00))^1 && (stream != 0)); + bool rds2_tunneling = ((blocks[0] == 0) && (stream != 0)); for (uint8_t i = 0; i < GROUP_LENGTH; i++) { offset_word = offset_words[i];