From 686acaec090a56bff00a928c3f9cfc2db56cf9fe Mon Sep 17 00:00:00 2001 From: Michael Black Date: Wed, 27 Nov 2019 14:19:42 -0600 Subject: [PATCH] Fix segfault in flrig.c due to 64-bit mode conversion - was causing segfault on 32-bit systems Change return value to RIG_MODE_NONE in flrig.c to match the function type --- dummy/flrig.c | 12 ++++++------ dummy/flrig.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dummy/flrig.c b/dummy/flrig.c index 6dc8ac77b..3f6ffaf4f 100644 --- a/dummy/flrig.c +++ b/dummy/flrig.c @@ -549,7 +549,7 @@ static rmode_t modeMapGetHamlib(const char *modeFLRig) rig_debug(RIG_DEBUG_TRACE, "%s: Unknown mode requested: %s\n", __FUNCTION__, modeFLRig); - return -RIG_EINVAL; + return RIG_MODE_NONE; } @@ -563,8 +563,8 @@ static void modeMapAdd(rmode_t *modes, rmode_t mode_hamlib, char *mode_flrig) rig_debug(RIG_DEBUG_TRACE, "%s:mode_flrig=%s\n", __FUNCTION__, mode_flrig); // if we already have it just return - if (modeMapGetHamlib(mode_flrig) != -RIG_EINVAL) { return; } - + // We get ERROR if the mode is not known so non-ERROR is OK + if (modeMapGetHamlib(mode_flrig) != RIG_MODE_NONE) { return; } int len1 = strlen(mode_flrig) + 3; /* bytes needed for allocating */ for (i = 0; modeMap[i].mode_hamlib != 0; ++i) @@ -595,8 +595,8 @@ static void modeMapAdd(rmode_t *modes, rmode_t mode_hamlib, char *mode_flrig) strncat(modeMap[i].mode_flrig, mode_flrig, len1 + len2); strncat(modeMap[i].mode_flrig, "|", len1 + len2); - rig_debug(RIG_DEBUG_TRACE, "%s: Adding mode=%s at %d, index=%d, result=%s\n", - __FUNCTION__, mode_flrig, mode_hamlib, i, modeMap[i].mode_flrig); + rig_debug(RIG_DEBUG_TRACE,"%s: Adding mode=%s, index=%d, result=%s\n", + __FUNCTION__, mode_flrig, i, modeMap[i].mode_flrig); return; } } @@ -753,7 +753,7 @@ static int flrig_open(RIG *rig) else if (streq(p, "RTTY(U)")) { modeMapAdd(&modes, RIG_MODE_RTTY, p); } else if (streq(p, "RTTY(R")) { modeMapAdd(&modes, RIG_MODE_RTTYR, p); } else if (streq(p, "DIG")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else { rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode for this rig='%s'\n", __FUNCTION__, p); } + else { rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode (new?) for this rig='%s'\n", __FUNCTION__, p); } } rig->state.mode_list = modes; diff --git a/dummy/flrig.h b/dummy/flrig.h index 8ebfba9f6..9349edf20 100644 --- a/dummy/flrig.h +++ b/dummy/flrig.h @@ -28,7 +28,7 @@ #include #endif -#define BACKEND_VER "1.8" +#define BACKEND_VER "1.9" #define EOM "\r" #define TRUE 1