[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