[Buildroot] [PATCH] package/netdata: security bump to v1.37.1
Thomas Perale
thomas.perale at mind.be
Thu Oct 30 08:23:55 UTC 2025
In reply of:
> Do not bump to a more recent version, as the build system has
> fundamentally changed.
>
> See the release notes:
> - https://github.com/netdata/netdata/releases/tag/1.34.0
> - https://github.com/netdata/netdata/releases/tag/v1.34.1
> - https://github.com/netdata/netdata/releases/tag/v1.35.0
> - https://github.com/netdata/netdata/releases/tag/v1.35.1
> - https://github.com/netdata/netdata/releases/tag/v1.36.0
> - https://github.com/netdata/netdata/releases/tag/v1.36.1
> - https://github.com/netdata/netdata/releases/tag/v1.37.0
> - https://github.com/netdata/netdata/releases/tag/v1.37.1
>
> In addition, add upstream patch to fix cross-compilation.
>
> This fixes the following vulnerabilities:
> - CVE-2023-22496:
> Netdata is an open source option for real-time infrastructure
> monitoring and troubleshooting. An attacker with the ability to
> establish a streaming connection can execute arbitrary commands on the
> targeted Netdata agent. When an alert is triggered, the function
> `health_alarm_execute` is called. This function performs different
> checks and then enqueues a command by calling `spawn_enq_cmd`. This
> command is populated with several arguments that are not sanitized.
> One of them is the `registry_hostname` of the node for which the alert
> is raised. By providing a specially crafted `registry_hostname` as
> part of the health data that is streamed to a Netdata (parent) agent,
> an attacker can execute arbitrary commands at the remote host as a
> side-effect of the raised alert. Note that the commands are executed
> as the user running the Netdata Agent. This user is usually named
> `netdata`. The ability to run arbitrary commands may allow an attacker
> to escalate privileges by escalating other vulnerabilities in the
> system, as that user. The problem has been fixed in: Netdata agent
> v1.37 (stable) and Netdata agent v1.36.0-409 (nightly). As a
> workaround, streaming is not enabled by default. If you have
> previously enabled this, it can be disabled. Limiting access to the
> port on the recipient Agent to trusted child connections may mitigate
> the impact of this vulnerability.
> https://www.cve.org/CVERecord?id=CVE-2023-22496
>
> - CVE-2023-22497:
> Netdata is an open source option for real-time infrastructure
> monitoring and troubleshooting. Each Netdata Agent has an
> automatically generated MACHINE GUID. It is generated when the agent
> first starts and it is saved to disk, so that it will persist across
> restarts and reboots. Anyone who has access to a Netdata Agent has
> access to its MACHINE_GUID. Streaming is a feature that allows a
> Netdata Agent to act as parent for other Netdata Agents (children),
> offloading children from various functions (increased data retention,
> ML, health monitoring, etc) that can now be handled by the parent
> Agent. Configuration is done via `stream.conf`. On the parent side,
> users configure in `stream.conf` an API key (any random UUID can do)
> to provide common configuration for all children using this API key
> and per MACHINE GUID configuration to customize the configuration for
> each child. The way this was implemented, allowed an attacker to use a
> valid MACHINE_GUID as an API key. This affects all users who expose
> their Netdata Agents (children) to non-trusted users and they also
> expose to the same users Netdata Agent parents that aggregate data
> from all these children. The problem has been fixed in: Netdata agent
> v1.37 (stable) and Netdata agent v1.36.0-409 (nightly). As a
> workaround, do not enable streaming by default. If you have previously
> enabled this, it can be disabled. Limiting access to the port on the
> recipient Agent to trusted child connections may mitigate the impact
> of this vulnerability.
> https://www.cve.org/CVERecord?id=CVE-2023-22497
>
> Signed-off-by: Titouan Christophe <titouan.christophe at mind.be>
Applied to 2025.02.x & 2025.08.x. Thanks
> ---
> .../0001-libjudy-remove-JudyLTablesGen.patch | 707 ++++++++++++++++++
> package/netdata/netdata.hash | 4 +-
> package/netdata/netdata.mk | 3 +-
> 3 files changed, 711 insertions(+), 3 deletions(-)
> create mode 100644 package/netdata/0001-libjudy-remove-JudyLTablesGen.patch
>
> diff --git a/package/netdata/0001-libjudy-remove-JudyLTablesGen.patch b/package/netdata/0001-libjudy-remove-JudyLTablesGen.patch
> new file mode 100644
> index 0000000000..b04f61721a
> --- /dev/null
> +++ b/package/netdata/0001-libjudy-remove-JudyLTablesGen.patch
> @@ -0,0 +1,707 @@
> +From 4241f557597013dcdf959b688730888b4370660c Mon Sep 17 00:00:00 2001
> +From: mochaaP <git at mochaa.ws>
> +Date: Sat, 29 Apr 2023 14:52:02 +0800
> +Subject: [PATCH] libjudy: remove JudyLTablesGen
> +
> +JudyLTablesGen could be replaced with a pregenerated file
> +with 32-bit / 64-bit specific macros. Fixes #14185
> +
> +Upstream: https://github.com/netdata/netdata/pull/14984
> +
> +[Titouan: adapt to netdata v1.37.1]
> +Signed-off-by: Titouan Christophe <titouan.christophe at mind.be>
> +---
> + Makefile.am | 17 +-
> + libnetdata/libjudy/src/JudyL/JudyLTables.c | 338 ++++++++++++++++++
> + libnetdata/libjudy/src/JudyL/JudyLTablesGen.c | 296 ---------------
> + 3 files changed, 339 insertions(+), 312 deletions(-)
> + create mode 100644 libnetdata/libjudy/src/JudyL/JudyLTables.c
> + delete mode 100644 libnetdata/libjudy/src/JudyL/JudyLTablesGen.c
> +
> +diff --git a/Makefile.am b/Makefile.am
> +index 5e16052..750d86e 100644
> +--- a/Makefile.am
> ++++ b/Makefile.am
> +@@ -504,15 +504,10 @@ libjudy_a_SOURCES = libnetdata/libjudy/src/Judy.h \
> + libnetdata/libjudy/src/JudyL/JudyLNextEmpty.c \
> + libnetdata/libjudy/src/JudyL/JudyLPrev.c \
> + libnetdata/libjudy/src/JudyL/JudyLPrevEmpty.c \
> ++ libnetdata/libjudy/src/JudyL/JudyLTables.c \
> + libnetdata/libjudy/src/JudyHS/JudyHS.c \
> + $(NULL)
> +
> +-nodist_libjudy_a_SOURCES = JudyLTables.c
> +-
> +-BUILT_SOURCES += JudyLTables.c
> +-
> +-CLEANFILES += JudyLTables.c
> +-
> + libjudy_a_CFLAGS = $(LIBJUDY_CFLAGS) -DJUDYL -I$(abs_top_srcdir)/libnetdata/libjudy/src -I$(abs_top_srcdir)/libnetdata/libjudy/src/JudyCommon -Wno-sign-compare -Wno-implicit-fallthrough
> +
> + libnetdata/libjudy/src/JudyL/libjudy_a-JudyLPrev.$(OBJEXT) : CFLAGS += -DJUDYPREV
> +@@ -522,16 +517,6 @@ libnetdata/libjudy/src/JudyL/libjudy_a-JudyLNextEmpty.$(OBJEXT) : CFLAGS += -DJU
> + libnetdata/libjudy/src/JudyL/libjudy_a-JudyLByCount.$(OBJEXT) : CFLAGS += -DNOSMARTJBB -DNOSMARTJBU -DNOSMARTJLB
> + libnetdata/libjudy/src/JudyL/libjudy_a-j__udyLGet.$(OBJEXT) : CFLAGS += -DJUDYGETINLINE
> +
> +-noinst_PROGRAMS = judyltablesgen
> +-
> +-judyltablesgen_SOURCES = libnetdata/libjudy/src/JudyL/JudyLTablesGen.c
> +-judyltablesgen_CFLAGS = $(LIBJUDY_CFLAGS) -DJUDYL -I$(abs_top_srcdir)/libnetdata/libjudy/src -I$(abs_top_srcdir)/libnetdata/libjudy/src/JudyCommon -Wno-sign-compare -Wno-implicit-fallthrough
> +-
> +-$(builddir)/judyltablesgen$(EXEEXT) : CFLAGS += -Wno-format -Wno-format-security
> +-
> +-JudyLTables.c: $(abs_top_srcdir)/libnetdata/libjudy/src/JudyL/JudyLTablesGen.c $(builddir)/judyltablesgen$(EXEEXT)
> +- $(builddir)/judyltablesgen$(EXEEXT)
> +-
> + libjudy_a-JudyLTables.$(OBJEXT) : CFLAGS += -I$(abs_top_srcdir)/libnetdata/libjudy/src/JudyL
> +
> + if ENABLE_DBENGINE
> +diff --git a/libnetdata/libjudy/src/JudyL/JudyLTables.c b/libnetdata/libjudy/src/JudyL/JudyLTables.c
> +new file mode 100644
> +index 0000000..21c9749
> +--- /dev/null
> ++++ b/libnetdata/libjudy/src/JudyL/JudyLTables.c
> +@@ -0,0 +1,338 @@
> ++// @(#) From generation tool: $Revision: 4.37 $ $Source: /judy/src/JudyCommon/JudyTables.c $
> ++// Pregenerated and modified by hand. Do not overwrite!
> ++
> ++#include "JudyL.h"
> ++// Leave the malloc() sizes readable in the binary (via strings(1)):
> ++#ifdef JU_64BIT
> ++const char * JudyLMallocSizes = "JudyLMallocSizes = 3, 5, 7, 11, 15, 23, 32, 47, 64, Leaf1 = 13";
> ++#else // JU_32BIT
> ++const char * JudyLMallocSizes = "JudyLMallocSizes = 3, 5, 7, 11, 15, 23, 32, 47, 64, Leaf1 = 25";
> ++#endif // JU_64BIT
> ++
> ++#ifdef JU_64BIT
> ++// object uses 64 words
> ++// cJU_BITSPERSUBEXPB = 32
> ++const uint8_t
> ++j__L_BranchBJPPopToWords[cJU_BITSPERSUBEXPB + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 11, 11, 15, 15, 23,
> ++ 23, 23, 23, 32, 32, 32, 32, 32,
> ++ 47, 47, 47, 47, 47, 47, 47, 64,
> ++ 64, 64, 64, 64, 64, 64, 64, 64
> ++};
> ++
> ++// object uses 15 words
> ++// cJL_LEAF1_MAXPOP1 = 13
> ++const uint8_t
> ++j__L_Leaf1PopToWords[cJL_LEAF1_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 5, 7, 7, 11, 11,
> ++ 11, 15, 15, 15, 15
> ++};
> ++const uint8_t
> ++j__L_Leaf1Offset[cJL_LEAF1_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 1, 1, 1, 1, 2, 2,
> ++ 2, 2, 2, 2, 2
> ++};
> ++
> ++// object uses 64 words
> ++// cJL_LEAF2_MAXPOP1 = 51
> ++const uint8_t
> ++j__L_Leaf2PopToWords[cJL_LEAF2_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 5, 7, 11, 11, 11,
> ++ 15, 15, 15, 15, 23, 23, 23, 23,
> ++ 23, 23, 32, 32, 32, 32, 32, 32,
> ++ 32, 47, 47, 47, 47, 47, 47, 47,
> ++ 47, 47, 47, 47, 47, 64, 64, 64,
> ++ 64, 64, 64, 64, 64, 64, 64, 64,
> ++ 64, 64, 64
> ++};
> ++const uint8_t
> ++j__L_Leaf2Offset[cJL_LEAF2_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 1, 1, 2, 3, 3, 3,
> ++ 3, 3, 3, 3, 5, 5, 5, 5,
> ++ 5, 5, 7, 7, 7, 7, 7, 7,
> ++ 7, 10, 10, 10, 10, 10, 10, 10,
> ++ 10, 10, 10, 10, 10, 13, 13, 13,
> ++ 13, 13, 13, 13, 13, 13, 13, 13,
> ++ 13, 13, 13
> ++};
> ++
> ++// object uses 64 words
> ++// cJL_LEAF3_MAXPOP1 = 46
> ++const uint8_t
> ++j__L_Leaf3PopToWords[cJL_LEAF3_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 7, 7, 11, 11, 11,
> ++ 15, 15, 23, 23, 23, 23, 23, 23,
> ++ 32, 32, 32, 32, 32, 32, 32, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 47,
> ++ 47, 47, 64, 64, 64, 64, 64, 64,
> ++ 64, 64, 64, 64, 64, 64
> ++};
> ++const uint8_t
> ++j__L_Leaf3Offset[cJL_LEAF3_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 2, 2, 2, 3, 3, 3,
> ++ 4, 4, 6, 6, 6, 6, 6, 6,
> ++ 9, 9, 9, 9, 9, 9, 9, 13,
> ++ 13, 13, 13, 13, 13, 13, 13, 13,
> ++ 13, 13, 18, 18, 18, 18, 18, 18,
> ++ 18, 18, 18, 18, 18, 18
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAF4_MAXPOP1 = 42
> ++const uint8_t
> ++j__L_Leaf4PopToWords[cJL_LEAF4_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 7, 11, 11, 11, 15,
> ++ 15, 15, 23, 23, 23, 23, 23, 32,
> ++ 32, 32, 32, 32, 32, 47, 47, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 63,
> ++ 63, 63, 63, 63, 63, 63, 63, 63,
> ++ 63, 63
> ++};
> ++const uint8_t
> ++j__L_Leaf4Offset[cJL_LEAF4_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 2, 2, 4, 4, 4, 5,
> ++ 5, 5, 8, 8, 8, 8, 8, 11,
> ++ 11, 11, 11, 11, 11, 16, 16, 16,
> ++ 16, 16, 16, 16, 16, 16, 16, 21,
> ++ 21, 21, 21, 21, 21, 21, 21, 21,
> ++ 21, 21
> ++};
> ++
> ++// object uses 64 words
> ++// cJL_LEAF5_MAXPOP1 = 39
> ++const uint8_t
> ++j__L_Leaf5PopToWords[cJL_LEAF5_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 5, 7, 11, 11, 15, 15,
> ++ 15, 23, 23, 23, 23, 23, 32, 32,
> ++ 32, 32, 32, 47, 47, 47, 47, 47,
> ++ 47, 47, 47, 47, 64, 64, 64, 64,
> ++ 64, 64, 64, 64, 64, 64, 64
> ++};
> ++const uint8_t
> ++j__L_Leaf5Offset[cJL_LEAF5_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 2, 2, 2, 3, 4, 4, 6, 6,
> ++ 6, 9, 9, 9, 9, 9, 12, 12,
> ++ 12, 12, 12, 18, 18, 18, 18, 18,
> ++ 18, 18, 18, 18, 25, 25, 25, 25,
> ++ 25, 25, 25, 25, 25, 25, 25
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAF6_MAXPOP1 = 36
> ++const uint8_t
> ++j__L_Leaf6PopToWords[cJL_LEAF6_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 7, 11, 11, 15, 15,
> ++ 23, 23, 23, 23, 23, 32, 32, 32,
> ++ 32, 32, 47, 47, 47, 47, 47, 47,
> ++ 47, 47, 63, 63, 63, 63, 63, 63,
> ++ 63, 63, 63, 63
> ++};
> ++const uint8_t
> ++j__L_Leaf6Offset[cJL_LEAF6_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 3, 3, 3, 5, 5, 6, 6,
> ++ 10, 10, 10, 10, 10, 14, 14, 14,
> ++ 14, 14, 20, 20, 20, 20, 20, 20,
> ++ 20, 20, 27, 27, 27, 27, 27, 27,
> ++ 27, 27, 27, 27
> ++};
> ++
> ++// object uses 64 words
> ++// cJL_LEAF7_MAXPOP1 = 34
> ++const uint8_t
> ++j__L_Leaf7PopToWords[cJL_LEAF7_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 11, 11, 15, 15, 15,
> ++ 23, 23, 23, 23, 32, 32, 32, 32,
> ++ 32, 47, 47, 47, 47, 47, 47, 47,
> ++ 47, 64, 64, 64, 64, 64, 64, 64,
> ++ 64, 64
> ++};
> ++const uint8_t
> ++j__L_Leaf7Offset[cJL_LEAF7_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 3, 3, 5, 5, 7, 7, 7,
> ++ 11, 11, 11, 11, 15, 15, 15, 15,
> ++ 15, 22, 22, 22, 22, 22, 22, 22,
> ++ 22, 30, 30, 30, 30, 30, 30, 30,
> ++ 30, 30
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAFW_MAXPOP1 = 31
> ++const uint8_t
> ++j__L_LeafWPopToWords[cJL_LEAFW_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 11, 11, 15, 15, 23,
> ++ 23, 23, 23, 32, 32, 32, 32, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 63,
> ++ 63, 63, 63, 63, 63, 63, 63
> ++};
> ++const uint8_t
> ++j__L_LeafWOffset[cJL_LEAFW_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 2, 3, 4, 6, 6, 8, 8, 12,
> ++ 12, 12, 12, 16, 16, 16, 16, 24,
> ++ 24, 24, 24, 24, 24, 24, 24, 32,
> ++ 32, 32, 32, 32, 32, 32, 32
> ++};
> ++
> ++// object uses 64 words
> ++// cJU_BITSPERSUBEXPL = 64
> ++const uint8_t
> ++j__L_LeafVPopToWords[cJU_BITSPERSUBEXPL + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 3, 5, 5, 7, 7, 11,
> ++ 11, 11, 11, 15, 15, 15, 15, 23,
> ++ 23, 23, 23, 23, 23, 23, 23, 32,
> ++ 32, 32, 32, 32, 32, 32, 32, 32,
> ++ 47, 47, 47, 47, 47, 47, 47, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 64,
> ++ 64, 64, 64, 64, 64, 64, 64, 64,
> ++ 64, 64, 64, 64, 64, 64, 64, 64
> ++};
> ++#else // JU_32BIT
> ++// object uses 64 words
> ++// cJU_BITSPERSUBEXPB = 32
> ++const uint8_t
> ++j__L_BranchBJPPopToWords[cJU_BITSPERSUBEXPB + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 11, 11, 15, 15, 23,
> ++ 23, 23, 23, 32, 32, 32, 32, 32,
> ++ 47, 47, 47, 47, 47, 47, 47, 64,
> ++ 64, 64, 64, 64, 64, 64, 64, 64
> ++};
> ++
> ++// object uses 32 words
> ++// cJL_LEAF1_MAXPOP1 = 25
> ++const uint8_t
> ++j__L_Leaf1PopToWords[cJL_LEAF1_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 5, 7, 11, 11, 11,
> ++ 15, 15, 15, 15, 23, 23, 23, 23,
> ++ 23, 23, 32, 32, 32, 32, 32, 32,
> ++ 32
> ++};
> ++const uint8_t
> ++j__L_Leaf1Offset[cJL_LEAF1_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 1, 1, 2, 3, 3, 3,
> ++ 3, 3, 3, 3, 5, 5, 5, 5,
> ++ 5, 5, 7, 7, 7, 7, 7, 7,
> ++ 7
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAF2_MAXPOP1 = 42
> ++const uint8_t
> ++j__L_Leaf2PopToWords[cJL_LEAF2_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 5, 7, 11, 11, 11, 15,
> ++ 15, 15, 23, 23, 23, 23, 23, 32,
> ++ 32, 32, 32, 32, 32, 47, 47, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 63,
> ++ 63, 63, 63, 63, 63, 63, 63, 63,
> ++ 63, 63
> ++};
> ++const uint8_t
> ++j__L_Leaf2Offset[cJL_LEAF2_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 1, 2, 2, 4, 4, 4, 5,
> ++ 5, 5, 8, 8, 8, 8, 8, 11,
> ++ 11, 11, 11, 11, 11, 16, 16, 16,
> ++ 16, 16, 16, 16, 16, 16, 16, 21,
> ++ 21, 21, 21, 21, 21, 21, 21, 21,
> ++ 21, 21
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAF3_MAXPOP1 = 36
> ++const uint8_t
> ++j__L_Leaf3PopToWords[cJL_LEAF3_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 7, 11, 11, 15, 15,
> ++ 23, 23, 23, 23, 23, 32, 32, 32,
> ++ 32, 32, 47, 47, 47, 47, 47, 47,
> ++ 47, 47, 63, 63, 63, 63, 63, 63,
> ++ 63, 63, 63, 63
> ++};
> ++const uint8_t
> ++j__L_Leaf3Offset[cJL_LEAF3_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 1, 3, 3, 3, 5, 5, 6, 6,
> ++ 10, 10, 10, 10, 10, 14, 14, 14,
> ++ 14, 14, 20, 20, 20, 20, 20, 20,
> ++ 20, 20, 27, 27, 27, 27, 27, 27,
> ++ 27, 27, 27, 27
> ++};
> ++
> ++// object uses 63 words
> ++// cJL_LEAFW_MAXPOP1 = 31
> ++const uint8_t
> ++j__L_LeafWPopToWords[cJL_LEAFW_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 3, 5, 7, 11, 11, 15, 15, 23,
> ++ 23, 23, 23, 32, 32, 32, 32, 47,
> ++ 47, 47, 47, 47, 47, 47, 47, 63,
> ++ 63, 63, 63, 63, 63, 63, 63
> ++};
> ++const uint8_t
> ++j__L_LeafWOffset[cJL_LEAFW_MAXPOP1 + 1] =
> ++{
> ++ 0,
> ++ 2, 3, 4, 6, 6, 8, 8, 12,
> ++ 12, 12, 12, 16, 16, 16, 16, 24,
> ++ 24, 24, 24, 24, 24, 24, 24, 32,
> ++ 32, 32, 32, 32, 32, 32, 32
> ++};
> ++
> ++// object uses 32 words
> ++// cJU_BITSPERSUBEXPL = 32
> ++const uint8_t
> ++j__L_LeafVPopToWords[cJU_BITSPERSUBEXPL + 1] =
> ++{
> ++ 0,
> ++ 3, 3, 3, 5, 5, 7, 7, 11,
> ++ 11, 11, 11, 15, 15, 15, 15, 23,
> ++ 23, 23, 23, 23, 23, 23, 23, 32,
> ++ 32, 32, 32, 32, 32, 32, 32, 32
> ++};
> ++#endif // JU_64BIT
> +diff --git a/libnetdata/libjudy/src/JudyL/JudyLTablesGen.c b/libnetdata/libjudy/src/JudyL/JudyLTablesGen.c
> +deleted file mode 100644
> +index cb8b13f..0000000
> +--- a/libnetdata/libjudy/src/JudyL/JudyLTablesGen.c
> ++++ /dev/null
> +@@ -1,296 +0,0 @@
> +-// Copyright (C) 2000 - 2002 Hewlett-Packard Company
> +-//
> +-// This program is free software; you can redistribute it and/or modify it
> +-// under the term of the GNU Lesser General Public License as published by the
> +-// Free Software Foundation; either version 2 of the License, or (at your
> +-// option) any later version.
> +-//
> +-// This program is distributed in the hope that it will be useful, but WITHOUT
> +-// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +-// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
> +-// for more details.
> +-//
> +-// You should have received a copy of the GNU Lesser General Public License
> +-// along with this program; if not, write to the Free Software Foundation,
> +-// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> +-// _________________
> +-
> +-// @(#) $Revision: 4.37 $ $Source: /judy/src/JudyCommon/JudyTables.c $
> +-
> +-#ifndef JU_WIN
> +-#include <unistd.h> // unavailable on win_*.
> +-#endif
> +-
> +-#include <stdlib.h>
> +-#include <stdio.h>
> +-
> +-#if (! (defined(JUDY1) || defined(JUDYL)))
> +-#error: One of -DJUDY1 or -DJUDYL must be specified.
> +-#endif
> +-
> +-#define TERMINATOR 999 // terminator for Alloc tables
> +-
> +-#define BPW sizeof(Word_t) // define bytes per word
> +-
> +-#ifdef JUDY1
> +-#include "Judy1.h"
> +-#else
> +-#include "JudyL.h"
> +-#endif
> +-
> +-FILE *fd;
> +-
> +-// Definitions come from header files Judy1.h and JudyL.h:
> +-
> +-int AllocSizes[] = ALLOCSIZES;
> +-
> +-#define ROUNDUP(BYTES,BPW,OFFSETW) \
> +- ((((BYTES) + (BPW) - 1) / (BPW)) + (OFFSETW))
> +-
> +-
> +-// ****************************************************************************
> +-// G E N T A B L E
> +-//
> +-// Note: "const" is required for newer compilers.
> +-
> +-FUNCTION void GenTable(
> +- const char * TableName, // name of table string
> +- const char * TableSize, // dimentioned size string
> +- int IndexBytes, // bytes per Index
> +- int LeafSize, // number elements in object
> +- int ValueBytes, // bytes per Value
> +- int OffsetWords) // 1 for LEAFW
> +-{
> +- int * PAllocSizes = AllocSizes;
> +- int OWord;
> +- int CurWord;
> +- int IWord;
> +- int ii;
> +- int BytesOfIndex;
> +- int BytesOfObject;
> +- int Index;
> +- int LastWords;
> +- int Words [1000] = { 0 };
> +- int Offset[1000] = { 0 };
> +- int MaxWords;
> +-
> +- MaxWords = ROUNDUP((IndexBytes + ValueBytes) * LeafSize, BPW, OffsetWords);
> +- Words[0] = 0;
> +- Offset[0] = 0;
> +- CurWord = TERMINATOR;
> +-
> +-// Walk through all number of Indexes in table:
> +-
> +- for (Index = 1; /* null */; ++Index)
> +- {
> +-
> +-// Calculate byte required for next size:
> +-
> +- BytesOfIndex = IndexBytes * Index;
> +- BytesOfObject = (IndexBytes + ValueBytes) * Index;
> +-
> +-// Round up and calculate words required for next size:
> +-
> +- OWord = ROUNDUP(BytesOfObject, BPW, OffsetWords);
> +- IWord = ROUNDUP(BytesOfIndex, BPW, OffsetWords);
> +-
> +-// Root-level leaves of population of 1 and 2 do not have the 1 word offset:
> +-
> +-// Save minimum value of offset:
> +-
> +- Offset[Index] = IWord;
> +-
> +-// Round up to next available size of words:
> +-
> +- while (OWord > *PAllocSizes) PAllocSizes++;
> +-
> +- if (Index == LeafSize)
> +- {
> +- CurWord = Words[Index] = OWord;
> +- break;
> +- }
> +-// end of available sizes ?
> +-
> +- if (*PAllocSizes == TERMINATOR)
> +- {
> +- fprintf(stderr, "BUG, in %sPopToWords, sizes not big enough for object\n", TableName);
> +- exit(1);
> +- }
> +-
> +-// Save words required and last word:
> +-
> +- if (*PAllocSizes < MaxWords) { CurWord = Words[Index] = *PAllocSizes; }
> +- else { CurWord = Words[Index] = MaxWords; }
> +-
> +- } // for each index
> +-
> +- LastWords = TERMINATOR;
> +-
> +-// Round up to largest size in each group of malloc sizes:
> +-
> +- for (ii = LeafSize; ii > 0; ii--)
> +- {
> +- if (LastWords > (Words[ii] - ii)) LastWords = Offset[ii];
> +- else Offset[ii] = LastWords;
> +- }
> +-
> +-// Print the PopToWords[] table:
> +-
> +- fprintf(fd,"\n//\tobject uses %d words\n", CurWord);
> +- fprintf(fd,"//\t%s = %d\n", TableSize, LeafSize);
> +-
> +- fprintf(fd,"const uint8_t\n");
> +- fprintf(fd,"%sPopToWords[%s + 1] =\n", TableName, TableSize);
> +- fprintf(fd,"{\n\t 0,");
> +-
> +- for (ii = 1; ii <= LeafSize; ii++)
> +- {
> +-
> +-// 8 columns per line, starting with 1:
> +-
> +- if ((ii % 8) == 1) fprintf(fd,"\n\t");
> +-
> +- fprintf(fd,"%2d", Words[ii]);
> +-
> +-// If not last number place comma:
> +-
> +- if (ii != LeafSize) fprintf(fd,", ");
> +- }
> +- fprintf(fd,"\n};\n");
> +-
> +-// Print the Offset table if needed:
> +-
> +- if (! ValueBytes) return;
> +-
> +- fprintf(fd,"const uint8_t\n");
> +- fprintf(fd,"%sOffset[%s + 1] =\n", TableName, TableSize);
> +- fprintf(fd,"{\n");
> +- fprintf(fd,"\t 0,");
> +-
> +- for (ii = 1; ii <= LeafSize; ii++)
> +- {
> +- if ((ii % 8) == 1) fprintf(fd,"\n\t");
> +-
> +- fprintf(fd,"%2d", Offset[ii]);
> +-
> +- if (ii != LeafSize) fprintf(fd,", ");
> +- }
> +- fprintf(fd,"\n};\n");
> +-
> +-} // GenTable()
> +-
> +-
> +-// ****************************************************************************
> +-// M A I N
> +-
> +-FUNCTION int main()
> +-{
> +- int ii;
> +-
> +-#ifdef JUDY1
> +- char *fname = "Judy1Tables.c";
> +-#else
> +- char *fname = "JudyLTables.c";
> +-#endif
> +-
> +- if ((fd = fopen(fname, "w")) == NULL){
> +- perror("FATAL ERROR: could not write to Judy[1L]Tables.c file\n");
> +- return (-1);
> +- }
> +-
> +-
> +- fprintf(fd,"// @(#) From generation tool: $Revision: 4.37 $ $Source: /judy/src/JudyCommon/JudyTables.c $\n");
> +- fprintf(fd,"//\n\n");
> +-
> +-
> +-// ================================ Judy1 =================================
> +-#ifdef JUDY1
> +-
> +- fprintf(fd,"#include \"Judy1.h\"\n");
> +-
> +- fprintf(fd,"// Leave the malloc() sizes readable in the binary (via "
> +- "strings(1)):\n");
> +- fprintf(fd,"const char * Judy1MallocSizes = \"Judy1MallocSizes =");
> +-
> +- for (ii = 0; AllocSizes[ii] != TERMINATOR; ii++)
> +- fprintf(fd," %d,", AllocSizes[ii]);
> +-
> +-#ifndef JU_64BIT
> +- fprintf(fd," Leaf1 = %d\";\n\n", cJ1_LEAF1_MAXPOP1);
> +-#else
> +- fprintf(fd,"\";\n\n"); // no Leaf1 in this case.
> +-#endif
> +-
> +-// ================================ 32 bit ================================
> +-#ifndef JU_64BIT
> +-
> +- GenTable("j__1_BranchBJP","cJU_BITSPERSUBEXPB", 8, cJU_BITSPERSUBEXPB,0,0);
> +-
> +- GenTable("j__1_Leaf1", "cJ1_LEAF1_MAXPOP1", 1, cJ1_LEAF1_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf2", "cJ1_LEAF2_MAXPOP1", 2, cJ1_LEAF2_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf3", "cJ1_LEAF3_MAXPOP1", 3, cJ1_LEAF3_MAXPOP1, 0, 0);
> +- GenTable("j__1_LeafW", "cJ1_LEAFW_MAXPOP1", 4, cJ1_LEAFW_MAXPOP1, 0, 1);
> +-
> +-#endif
> +-
> +-// ================================ 64 bit ================================
> +-#ifdef JU_64BIT
> +- GenTable("j__1_BranchBJP","cJU_BITSPERSUBEXPB",16, cJU_BITSPERSUBEXPB,0,0);
> +-
> +- GenTable("j__1_Leaf2", "cJ1_LEAF2_MAXPOP1", 2, cJ1_LEAF2_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf3", "cJ1_LEAF3_MAXPOP1", 3, cJ1_LEAF3_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf4", "cJ1_LEAF4_MAXPOP1", 4, cJ1_LEAF4_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf5", "cJ1_LEAF5_MAXPOP1", 5, cJ1_LEAF5_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf6", "cJ1_LEAF6_MAXPOP1", 6, cJ1_LEAF6_MAXPOP1, 0, 0);
> +- GenTable("j__1_Leaf7", "cJ1_LEAF7_MAXPOP1", 7, cJ1_LEAF7_MAXPOP1, 0, 0);
> +- GenTable("j__1_LeafW", "cJ1_LEAFW_MAXPOP1", 8, cJ1_LEAFW_MAXPOP1, 0, 1);
> +-#endif
> +-#endif // JUDY1
> +-
> +-
> +-// ================================ JudyL =================================
> +-#ifdef JUDYL
> +-
> +- fprintf(fd,"#include \"JudyL.h\"\n");
> +-
> +- fprintf(fd,"// Leave the malloc() sizes readable in the binary (via "
> +- "strings(1)):\n");
> +- fprintf(fd,"const char * JudyLMallocSizes = \"JudyLMallocSizes =");
> +-
> +- for (ii = 0; AllocSizes[ii] != TERMINATOR; ii++)
> +- fprintf(fd," %d,", AllocSizes[ii]);
> +-
> +- fprintf(fd," Leaf1 = %ld\";\n\n", (Word_t)cJL_LEAF1_MAXPOP1);
> +-
> +-#ifndef JU_64BIT
> +-// ================================ 32 bit ================================
> +- GenTable("j__L_BranchBJP","cJU_BITSPERSUBEXPB", 8, cJU_BITSPERSUBEXPB, 0,0);
> +-
> +- GenTable("j__L_Leaf1", "cJL_LEAF1_MAXPOP1", 1, cJL_LEAF1_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf2", "cJL_LEAF2_MAXPOP1", 2, cJL_LEAF2_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf3", "cJL_LEAF3_MAXPOP1", 3, cJL_LEAF3_MAXPOP1, BPW,0);
> +- GenTable("j__L_LeafW", "cJL_LEAFW_MAXPOP1", 4, cJL_LEAFW_MAXPOP1, BPW,1);
> +- GenTable("j__L_LeafV", "cJU_BITSPERSUBEXPL", 4, cJU_BITSPERSUBEXPL, 0,0);
> +-#endif // 32 BIT
> +-
> +-#ifdef JU_64BIT
> +-// ================================ 64 bit ================================
> +- GenTable("j__L_BranchBJP","cJU_BITSPERSUBEXPB",16, cJU_BITSPERSUBEXPB, 0,0);
> +-
> +- GenTable("j__L_Leaf1", "cJL_LEAF1_MAXPOP1", 1, cJL_LEAF1_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf2", "cJL_LEAF2_MAXPOP1", 2, cJL_LEAF2_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf3", "cJL_LEAF3_MAXPOP1", 3, cJL_LEAF3_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf4", "cJL_LEAF4_MAXPOP1", 4, cJL_LEAF4_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf5", "cJL_LEAF5_MAXPOP1", 5, cJL_LEAF5_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf6", "cJL_LEAF6_MAXPOP1", 6, cJL_LEAF6_MAXPOP1, BPW,0);
> +- GenTable("j__L_Leaf7", "cJL_LEAF7_MAXPOP1", 7, cJL_LEAF7_MAXPOP1, BPW,0);
> +- GenTable("j__L_LeafW", "cJL_LEAFW_MAXPOP1", 8, cJL_LEAFW_MAXPOP1, BPW,1);
> +- GenTable("j__L_LeafV", "cJU_BITSPERSUBEXPL", 8, cJU_BITSPERSUBEXPL, 0,0);
> +-#endif // 64 BIT
> +-
> +-#endif // JUDYL
> +- fclose(fd);
> +-
> +- return(0);
> +-
> +-} // main()
> +--
> +2.51.0
> +
> diff --git a/package/netdata/netdata.hash b/package/netdata/netdata.hash
> index bc33a8b8a1..df80453f3a 100644
> --- a/package/netdata/netdata.hash
> +++ b/package/netdata/netdata.hash
> @@ -1,5 +1,5 @@
> -# From https://github.com/netdata/netdata/releases/download/v1.33.1/sha256sums.txt
> -sha256 20ba8695d87187787b27128ac3aab9b09aa29ca6b508c48542e0f7d50ec9322b netdata-v1.33.1.tar.gz
> +# From https://github.com/netdata/netdata/releases/download/v1.37.1/sha256sums.txt
> +sha256 2caa042d43ca61007a61294a5ececa037d83a1973bd38032233760341eb1706b netdata-v1.37.1.tar.gz
>
> # Locally calculated
> sha256 0e5fd9d833efe9b79f784d1903281554af82d1b4261af67d35455728e5572aa6 LICENSE
> diff --git a/package/netdata/netdata.mk b/package/netdata/netdata.mk
> index 4bc573df59..ac3f829f0a 100644
> --- a/package/netdata/netdata.mk
> +++ b/package/netdata/netdata.mk
> @@ -4,7 +4,7 @@
> #
> ################################################################################
>
> -NETDATA_VERSION = 1.33.1
> +NETDATA_VERSION = 1.37.1
> NETDATA_SOURCE = netdata-v$(NETDATA_VERSION).tar.gz
> NETDATA_SITE = \
> https://github.com/netdata/netdata/releases/download/v$(NETDATA_VERSION)
> @@ -18,6 +18,7 @@ NETDATA_CONF_OPTS = \
> --disable-ml \
> --disable-unit-tests
> NETDATA_DEPENDENCIES = libuv util-linux zlib
> +NETDATA_AUTORECONF = YES
>
> # ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test
> # provided by autoconf relies on wchar_t.
> --
> 2.51.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
More information about the buildroot
mailing list