@cryptotaxi247 / netdata-1 / commits / 1e345dfca

Fix coverity issues, logically dead code and error checking (#16618)

Stelios Fragkakis committed Dec 17, 2023 at 23:02 UTC 1e345dfca9f72ee5b4b8f314de2ccb04f49be188
1 file changed +15 -20
libnetdata/log/log.c
+15 -20
@@ -1431,10 +1431,7 @@ static int64_t log_field_to_int64(struct log_field *lf) {
1431 break;
1432
1433 case NDFT_CALLBACK:
1434 - if(!tmp)
1435 - tmp = buffer_create(0, NULL);
1436 - else
1437 - buffer_flush(tmp);
1434 + tmp = buffer_create(0, NULL);
1435
1436 if(lf->entry.cb.formatter(tmp, lf->entry.cb.formatter_data))
1437 s = buffer_tostring(tmp);
@@ -1495,10 +1492,7 @@ static uint64_t log_field_to_uint64(struct log_field *lf) {
1492 break;
1493
1494 case NDFT_CALLBACK:
1498 - if(!tmp)
1499 - tmp = buffer_create(0, NULL);
1500 - else
1501 - buffer_flush(tmp);
1495 + tmp = buffer_create(0, NULL);
1496
1497 if(lf->entry.cb.formatter(tmp, lf->entry.cb.formatter_data))
1498 s = buffer_tostring(tmp);
@@ -1513,7 +1507,7 @@ static uint64_t log_field_to_uint64(struct log_field *lf) {
1507 return lf->entry.i64;
1508
1509 case NDFT_DBL:
1516 - return lf->entry.dbl;
1510 + return (uint64_t) lf->entry.dbl;
1511 }
1512
1513 if(s && *s)
@@ -1753,31 +1747,32 @@ static bool nd_logger_journal_libsystemd(struct log_field *fields, size_t fields
1747
1748 const char *key = fields[i].journal;
1749 char *value = NULL;
1750 + int rc = 0;
1751 switch (fields[i].entry.type) {
1752 case NDFT_TXT:
1753 if(*fields[i].entry.txt)
1759 - asprintf(&value, "%s=%s", key, fields[i].entry.txt);
1754 + rc = asprintf(&value, "%s=%s", key, fields[i].entry.txt);
1755 break;
1756 case NDFT_STR:
1762 - asprintf(&value, "%s=%s", key, string2str(fields[i].entry.str));
1757 + rc = asprintf(&value, "%s=%s", key, string2str(fields[i].entry.str));
1758 break;
1759 case NDFT_BFR:
1760 if(buffer_strlen(fields[i].entry.bfr))
1766 - asprintf(&value, "%s=%s", key, buffer_tostring(fields[i].entry.bfr));
1761 + rc = asprintf(&value, "%s=%s", key, buffer_tostring(fields[i].entry.bfr));
1762 break;
1763 case NDFT_U64:
1769 - asprintf(&value, "%s=%" PRIu64, key, fields[i].entry.u64);
1764 + rc = asprintf(&value, "%s=%" PRIu64, key, fields[i].entry.u64);
1765 break;
1766 case NDFT_I64:
1772 - asprintf(&value, "%s=%" PRId64, key, fields[i].entry.i64);
1767 + rc = asprintf(&value, "%s=%" PRId64, key, fields[i].entry.i64);
1768 break;
1769 case NDFT_DBL:
1775 - asprintf(&value, "%s=%f", key, fields[i].entry.dbl);
1770 + rc = asprintf(&value, "%s=%f", key, fields[i].entry.dbl);
1771 break;
1772 case NDFT_UUID: {
1773 char u[UUID_COMPACT_STR_LEN];
1774 uuid_unparse_lower_compact(*fields[i].entry.uuid, u);
1780 - asprintf(&value, "%s=%s", key, u);
1775 + rc = asprintf(&value, "%s=%s", key, u);
1776 }
1777 break;
1778 case NDFT_CALLBACK: {
@@ -1786,15 +1781,15 @@ static bool nd_logger_journal_libsystemd(struct log_field *fields, size_t fields
1781 else
1782 buffer_flush(tmp);
1783 if(fields[i].entry.cb.formatter(tmp, fields[i].entry.cb.formatter_data))
1789 - asprintf(&value, "%s=%s", key, buffer_tostring(tmp));
1784 + rc = asprintf(&value, "%s=%s", key, buffer_tostring(tmp));
1785 }
1786 break;
1787 default:
1793 - asprintf(&value, "%s=%s", key, "UNHANDLED");
1788 + rc = asprintf(&value, "%s=%s", key, "UNHANDLED");
1789 break;
1790 }
1791
1797 - if (value) {
1792 + if (rc != -1 && value) {
1793 iov[iov_count].iov_base = value;
1794 iov[iov_count].iov_len = strlen(value);
1795 iov_count++;
@@ -1921,7 +1916,7 @@ static bool nd_logger_journal_direct(struct log_field *fields, size_t fields_max
1916 // ----------------------------------------------------------------------------
1917 // syslog logger - uses logfmt
1918
1924 -static bool nd_logger_syslog(int priority, ND_LOG_FORMAT format, struct log_field *fields, size_t fields_max) {
1919 +static bool nd_logger_syslog(int priority, ND_LOG_FORMAT format __maybe_unused, struct log_field *fields, size_t fields_max) {
1920 CLEAN_BUFFER *wb = buffer_create(1024, NULL);
1921
1922 nd_logger_logfmt(wb, fields, fields_max);