diff --git a/src/data.c b/src/data.c index 3bab7958..598be62a 100644 --- a/src/data.c +++ b/src/data.c @@ -153,6 +153,7 @@ alloc_error: // the static analyzer can't prove the allocs to be correct #pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wunknown-warning-option" #pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" diff --git a/src/microtar.c b/src/microtar.c index 8c2b1364..41ad89fc 100644 --- a/src/microtar.c +++ b/src/microtar.c @@ -148,10 +148,16 @@ static int header_to_raw(mtar_raw_header_t *rh, const mtar_header_t *h) { snprintf(rh->size, sizeof(rh->size), "%011o", h->size); snprintf(rh->mtime, sizeof(rh->mtime), "%011o", h->mtime); rh->type = h->type ? h->type : MTAR_TREG; + /* TAR does not need fields to be zero terminated */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#pragma GCC diagnostic ignored "-Wstringop-truncation" strncpy(rh->name, h->name, sizeof(rh->name)); strncpy(rh->linkname, h->linkname, sizeof(rh->linkname)); strncpy(rh->uname, h->uname, sizeof(rh->uname)); strncpy(rh->gname, h->gname, sizeof(rh->gname)); +#pragma GCC diagnostic pop memcpy(rh->magic, TMAGIC, TMAGLEN); memcpy(rh->version, TVERSION, TVERSLEN); diff --git a/src/optparse.c b/src/optparse.c index e4e0e1d3..10dbdca5 100644 --- a/src/optparse.c +++ b/src/optparse.c @@ -99,6 +99,12 @@ double arg_float(char const *str, char const *error_hint) return val; } +// GCC'S analyzer has a false-positive on strchr() here +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#pragma GCC diagnostic ignored "-Wanalyzer-deref-before-check" + char *hostport_param(char *param, char const **host, char const **port) { if (param && *param) { @@ -133,6 +139,8 @@ char *hostport_param(char *param, char const **host, char const **port) return NULL; } +#pragma GCC diagnostic pop + uint32_t atouint32_metric(char const *str, char const *error_hint) { if (!str) { diff --git a/src/sdr.c b/src/sdr.c index fdde4ee3..c09fa714 100644 --- a/src/sdr.c +++ b/src/sdr.c @@ -958,6 +958,7 @@ static int sdr_open_soapy(sdr_dev_t **out_dev, char const *dev_query, int verbos // the buffer sizes can't be proven to be correct #pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wunknown-warning-option" #pragma GCC diagnostic ignored "-Wanalyzer-allocation-size" diff --git a/src/sigmf.c b/src/sigmf.c index b2dc3dc5..58bf14e1 100644 --- a/src/sigmf.c +++ b/src/sigmf.c @@ -404,9 +404,14 @@ int sigmf_reader_open(sigmf_t *sigmf, char const *path) return -1; } - // Mangle stream name + // Mangle stream name, replace ".sigmf-meta" extension with ".data" extension size_t name_len = strlen(stream_name); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#pragma GCC diagnostic ignored "-Wstringop-truncation" strncpy(stream_name + name_len - 4, "data", 4); +#pragma GCC diagnostic pop // Load and print contents of file "foo.sigmf-data" // NOTE: finds the first instance but should theoretically use the last one