Try to make rigctl(d)/rotctl(d) a little more robust in case of bad data

https://github.com/Hamlib/Hamlib/issues/1351
pull/1392/head
Mike Black W9MDB 2023-10-02 10:48:26 -05:00
rodzic 0484dc08c8
commit 1a4a189dbc
2 zmienionych plików z 16 dodań i 7 usunięć

Wyświetl plik

@ -550,6 +550,7 @@ static int scanfc(FILE *fin, const char *format, void *p)
int ret;
*(char *)p = 0;
ret = fscanf(fin, format, p);
if (ret < 0)
@ -561,16 +562,16 @@ static int scanfc(FILE *fin, const char *format, void *p)
if (!feof(fin))
{
rig_debug(RIG_DEBUG_ERR,
"fscanf: parsing '%s' with '%s'\n",
(char *)p,
format);
rig_debug(RIG_DEBUG_TRACE,"%s fscanf of:", __func__);
dump_hex((unsigned char *)p, strlen(p));
rig_debug(RIG_DEBUG_TRACE," failed with format '%s'\n", format);
ret = 0x0a;
}
}
if (ret < 1) { rig_debug(RIG_DEBUG_TRACE, "%s: ret=%d\n", __func__, ret); }
if (ferror(fin)) { rig_debug(RIG_DEBUG_TRACE, "%s: errno=%d, %s\n", __func__, errno, strerror(errno)); }
if (ferror(fin)) { rig_debug(RIG_DEBUG_ERR, "%s: errno=%d, %s\n", __func__, errno, strerror(errno)); }
return ret;
}

Wyświetl plik

@ -405,10 +405,18 @@ static int scanfc(FILE *fin, const char *format, void *p)
continue;
}
rig_debug(RIG_DEBUG_ERR, "fscanf: %s\n", strerror(errno));
rig_debug(RIG_DEBUG_ERR, "fscanf: parsing '%s' with '%s'\n", (char *)p, format);
if (!feof(fin))
{
rig_debug(RIG_DEBUG_TRACE,"%s fscanf of:", __func__);
dump_hex((unsigned char *)p, strlen(p));
rig_debug(RIG_DEBUG_TRACE," failed with format '%s'\n", format);
ret = 0x0a;
}
}
if (ferror(fin)) { rig_debug(RIG_DEBUG_ERR, "%s: errno=%d, %s\n", __func__, errno, strerror(errno)); }
return ret;
}
while (1);