C-Netz: Correct check for valid channel numbers

This commit is contained in:
Andreas Eversberg 2020-02-18 19:03:03 +01:00
parent 69ef3b76bc
commit 89602822e6
1 changed files with 4 additions and 7 deletions

View File

@ -273,23 +273,20 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
cnetz_t *cnetz; cnetz_t *cnetz;
int rc; int rc;
if ((atoi(kanal) & 1) && atoi(kanal) < 1 && atoi(kanal) > 1147) { if ((atoi(kanal) & 1) && (atoi(kanal) < 3 || atoi(kanal) > 1147)) {
PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid.\n", kanal); PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid. For odd channel numbers, use channel 3 ... 1147.\n", kanal);
return -EINVAL; return -EINVAL;
} }
if ((atoi(kanal) & 1) && atoi(kanal) > 947) { if ((atoi(kanal) & 1) && atoi(kanal) > 947) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency channel %s, only newer phones support this!\n", kanal); PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency channel %s, only newer phones support this!\n", kanal);
} }
if (!(atoi(kanal) & 1) && atoi(kanal) < 2 && atoi(kanal) > 918) { if (!(atoi(kanal) & 1) && (atoi(kanal) < 4 || atoi(kanal) > 918)) {
PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid.\n", kanal); PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid. For even channel numbers, use channel 4 ... 918.\n", kanal);
return -EINVAL; return -EINVAL;
} }
if (!(atoi(kanal) & 1) && atoi(kanal) > 758) { if (!(atoi(kanal) & 1) && atoi(kanal) > 758) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency %s, only newer phones support this!\n", kanal); PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency %s, only newer phones support this!\n", kanal);
} }
if (atoi(kanal) == 1 || atoi(kanal) == 2) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "Channel ('Kanal') number %s is specified as 'unused', it might not work!\n", kanal);
}
/* OgK must be on channel 131 */ /* OgK must be on channel 131 */
if ((chan_type == CHAN_TYPE_OGK || chan_type == CHAN_TYPE_OGK_SPK) && atoi(kanal) != CNETZ_OGK_KANAL) { if ((chan_type == CHAN_TYPE_OGK || chan_type == CHAN_TYPE_OGK_SPK) && atoi(kanal) != CNETZ_OGK_KANAL) {