Files
openwrt/package/libs/libjson-c/Makefile
T
Jo-Philipp Wich e95288dcd5 libjson-c: fix memory leak in json_object_put()
json-c 0.19 wraps the actual object free in json_object_put() inside an
assert(), so when compiled with NDEBUG (as OpenWrt does) the free is
compiled out and every JSON object/array parsed by users such as
ucode's json() leaks memory (~1.7KB per object).

Apply the upstream fix, moving the free call outside the assert:

  json-c/json-c@f291fa81c6
  "free objects outside assert() in json_object_put"

Fixes: https://github.com/ucode-lang/ucode/issues/495
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2026-10-15 22:06:28 +02:00

63 lines
1.6 KiB
Makefile

#
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=json-c
PKG_VERSION:=0.19
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-nodoc.tar.gz
PKG_SOURCE_URL:=https://github.com/json-c/json-c/releases/download/json-c-$(PKG_VERSION)-20260627
PKG_HASH:=704927172443309a8efeb162060bb215548e1286e5568514007dd2cc35a0a164
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:json-c:json-c
HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
CMAKE_HOST_OPTIONS += \
-DDISABLE_EXTRA_LIBS:BOOL=ON \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DBUILD_APPS:BOOL=OFF
CMAKE_OPTIONS += \
-DDISABLE_EXTRA_LIBS:BOOL=ON \
-DBUILD_APPS:BOOL=OFF
define Package/libjson-c
SECTION:=libs
CATEGORY:=Libraries
TITLE:=javascript object notation
URL:=https://json-c.github.io/json-c/
ABI_VERSION:=5
endef
define Package/libjson-c/description
This package contains a library for javascript object notation backends.
endef
define Build/InstallDev
$(call Build/InstallDev/cmake,$(1))
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/json-c.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/json-c.pc
endef
define Package/libjson-c/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libjson-c.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libjson-c))
$(eval $(call HostBuild))