diff --git a/dev-libs/json-c/Manifest b/dev-libs/json-c/Manifest
index ccbad49..19c0f8b 100644
--- a/dev-libs/json-c/Manifest
+++ b/dev-libs/json-c/Manifest
@@ -1 +1 @@
-DIST json-c-0.12.tar.gz 501419 SHA256 000c01b2b3f82dcb4261751eb71f1b084404fb7d6a282f06074d3c17078b9f3f SHA512 c959804362386f6b77e9d04b5fedf6d6aff1fcd0ab50250edb25f759b510b402e7ad4b33d1cbadc3337b63a3145d19f310812a9ee351748348304b384dc2dc35 WHIRLPOOL b49f5c96b614302b39737306774b4346d8347afef6ced7067664ac0d68669a1496fe915f229e0d434a87b103ac9982d67c5785eb688b7026c257c7eae95c6eaf
+DIST json-c-0.14.tar.gz 321677 BLAKE2B 39325988dd58dad589fc0f036c17b2337c81cf7aab8ecb2232f8d59fef9d38df28e096f8d22320e0003799d477debddc4926eaa7a170954263c6b303c1fa056e SHA512 75537c61d0632a01f94d2394d7a4387ef1eca0b68aa56c495d3d96dd29b38ed20eb0cc3f6e5e24dc6660c8939669f8954005d9c3ba20437f3fcc9f9dd896b00d
diff --git a/dev-libs/json-c/files/json-c-0.14-cmake-static-libs.patch b/dev-libs/json-c/files/json-c-0.14-cmake-static-libs.patch
new file mode 100644
index 0000000..3913fc3
--- /dev/null
+++ b/dev-libs/json-c/files/json-c-0.14-cmake-static-libs.patch
@@ -0,0 +1,56 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ba692ff..fc2edff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -65,6 +65,7 @@ include(GNUInstallDirs)
+ include(CMakePackageConfigHelpers)
+ 
+ option(BUILD_SHARED_LIBS  "Default to building shared libraries" ON)
++option(BUILD_STATIC_LIBS  "Default to building static libraries" OFF)
+ 
+ # Generate a release merge and test it to verify the correctness of republishing the package.
+ ADD_CUSTOM_TARGET(distcheck
+@@ -383,7 +384,7 @@ add_library(${PROJECT_NAME}
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+     VERSION 5.0.0
+     SOVERSION 5)
+-
++list(APPEND CMAKE_TARGETS ${PROJECT_NAME})
+ # If json-c is used as subroject it set to target correct interface -I flags and allow
+ # to build external target without extra include_directories(...)
+ target_include_directories(${PROJECT_NAME}
+@@ -392,7 +393,33 @@ target_include_directories(${PROJECT_NAME}
+         $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+ )
+ 
+-install(TARGETS ${PROJECT_NAME}
++# Allow to build static and shared libraries at the same time
++if (BUILD_STATIC_LIBS)
++    set(STATIC_LIB ${PROJECT_NAME}-static)
++    add_library(${STATIC_LIB} STATIC
++        ${JSON_C_SOURCES}
++        ${JSON_C_HEADERS}
++    )
++
++    # rename the static library
++    set_target_properties(${STATIC_LIB} PROPERTIES
++        OUTPUT_NAME ${PROJECT_NAME}
++    )
++    list(APPEND CMAKE_TARGETS ${STATIC_LIB})
++endif ()
++
++# Always create new install dirs with 0755 permissions, regardless of umask
++set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
++	OWNER_READ
++	OWNER_WRITE
++	OWNER_EXECUTE
++	GROUP_READ
++	GROUP_EXECUTE
++	WORLD_READ
++	WORLD_EXECUTE
++   )
++
++install(TARGETS ${CMAKE_TARGETS}
+     EXPORT ${PROJECT_NAME}-targets
+     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff --git a/dev-libs/json-c/files/json-c-0.14-security-fix.patch b/dev-libs/json-c/files/json-c-0.14-security-fix.patch
new file mode 100644
index 0000000..69a0bc7
--- /dev/null
+++ b/dev-libs/json-c/files/json-c-0.14-security-fix.patch
@@ -0,0 +1,155 @@
+From 099016b7e8d70a6d5dd814e788bba08d33d48426 Mon Sep 17 00:00:00 2001
+From: Tobias Stoeckmann <tobias@stoeckmann.org>
+Date: Mon, 4 May 2020 19:41:16 +0200
+Subject: [PATCH 1/3] Protect array_list_del_idx against size_t overflow.
+
+If the assignment of stop overflows due to idx and count being
+larger than SIZE_T_MAX in sum, out of boundary access could happen.
+
+It takes invalid usage of this function for this to happen, but
+I decided to add this check so array_list_del_idx is as safe against
+bad usage as the other arraylist functions.
+---
+ arraylist.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arraylist.c b/arraylist.c
+index 12ad8af6d3..e5524aca75 100644
+--- a/arraylist.c
++++ b/arraylist.c
+@@ -136,6 +136,9 @@ int array_list_del_idx(struct array_list *arr, size_t idx, size_t count)
+ {
+ 	size_t i, stop;
+ 
++	/* Avoid overflow in calculation with large indices. */
++	if (idx > SIZE_T_MAX - count)
++		return -1;
+ 	stop = idx + count;
+ 	if (idx >= arr->length || stop > arr->length)
+ 		return -1;
+
+From 77d935b7ae7871a1940cd827e850e6063044ec45 Mon Sep 17 00:00:00 2001
+From: Tobias Stoeckmann <tobias@stoeckmann.org>
+Date: Mon, 4 May 2020 19:46:45 +0200
+Subject: [PATCH 2/3] Prevent division by zero in linkhash.
+
+If a linkhash with a size of zero is created, then modulo operations
+are prone to division by zero operations.
+
+Purely protective measure against bad usage.
+---
+ linkhash.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/linkhash.c b/linkhash.c
+index 7ea58c0abf..f05cc38030 100644
+--- a/linkhash.c
++++ b/linkhash.c
+@@ -12,6 +12,7 @@
+ 
+ #include "config.h"
+ 
++#include <assert.h>
+ #include <limits.h>
+ #include <stdarg.h>
+ #include <stddef.h>
+@@ -499,6 +500,8 @@ struct lh_table *lh_table_new(int size, lh_entry_free_fn *free_fn, lh_hash_fn *h
+ 	int i;
+ 	struct lh_table *t;
+ 
++	/* Allocate space for elements to avoid divisions by zero. */
++	assert(size > 0);
+ 	t = (struct lh_table *)calloc(1, sizeof(struct lh_table));
+ 	if (!t)
+ 		return NULL;
+
+From d07b91014986900a3a75f306d302e13e005e9d67 Mon Sep 17 00:00:00 2001
+From: Tobias Stoeckmann <tobias@stoeckmann.org>
+Date: Mon, 4 May 2020 19:47:25 +0200
+Subject: [PATCH 3/3] Fix integer overflows.
+
+The data structures linkhash and printbuf are limited to 2 GB in size
+due to a signed integer being used to track their current size.
+
+If too much data is added, then size variable can overflow, which is
+an undefined behaviour in C programming language.
+
+Assuming that a signed int overflow just leads to a negative value,
+like it happens on many sytems (Linux i686/amd64 with gcc), then
+printbuf is vulnerable to an out of boundary write on 64 bit systems.
+---
+ linkhash.c |  7 +++++--
+ printbuf.c | 19 ++++++++++++++++---
+ 2 files changed, 21 insertions(+), 5 deletions(-)
+
+diff --git a/linkhash.c b/linkhash.c
+index f05cc38030..51e90b13a2 100644
+--- a/linkhash.c
++++ b/linkhash.c
+@@ -580,9 +580,12 @@ int lh_table_insert_w_hash(struct lh_table *t, const void *k, const void *v, con
+ {
+ 	unsigned long n;
+ 
+-	if (t->count >= t->size * LH_LOAD_FACTOR)
+-		if (lh_table_resize(t, t->size * 2) != 0)
++	if (t->count >= t->size * LH_LOAD_FACTOR) {
++		/* Avoid signed integer overflow with large tables. */
++		int new_size = INT_MAX / 2 < t->size ? t->size * 2 : INT_MAX;
++		if (t->size == INT_MAX || lh_table_resize(t, new_size) != 0)
+ 			return -1;
++	}
+ 
+ 	n = h % t->size;
+ 
+diff --git a/printbuf.c b/printbuf.c
+index 976c12dde5..00822fac4f 100644
+--- a/printbuf.c
++++ b/printbuf.c
+@@ -15,6 +15,7 @@
+ 
+ #include "config.h"
+ 
++#include <limits.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -65,10 +66,16 @@ static int printbuf_extend(struct printbuf *p, int min_size)
+ 
+ 	if (p->size >= min_size)
+ 		return 0;
+-
+-	new_size = p->size * 2;
+-	if (new_size < min_size + 8)
++	/* Prevent signed integer overflows with large buffers. */
++	if (min_size > INT_MAX - 8)
++		return -1;
++	if (p->size > INT_MAX / 2)
+ 		new_size = min_size + 8;
++	else {
++		new_size = p->size * 2;
++		if (new_size < min_size + 8)
++			new_size = min_size + 8;
++	}
+ #ifdef PRINTBUF_DEBUG
+ 	MC_DEBUG("printbuf_memappend: realloc "
+ 	         "bpos=%d min_size=%d old_size=%d new_size=%d\n",
+@@ -83,6 +90,9 @@ static int printbuf_extend(struct printbuf *p, int min_size)
+ 
+ int printbuf_memappend(struct printbuf *p, const char *buf, int size)
+ {
++	/* Prevent signed integer overflows with large buffers. */
++	if (size > INT_MAX - p->bpos - 1)
++		return -1;
+ 	if (p->size <= p->bpos + size + 1)
+ 	{
+ 		if (printbuf_extend(p, p->bpos + size + 1) < 0)
+@@ -100,6 +110,9 @@ int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
+ 
+ 	if (offset == -1)
+ 		offset = pb->bpos;
++	/* Prevent signed integer overflows with large buffers. */
++	if (len > INT_MAX - offset)
++		return -1;
+ 	size_needed = offset + len;
+ 	if (pb->size < size_needed)
+ 	{
diff --git a/dev-libs/json-c/json-c-0.12.ebuild b/dev-libs/json-c/json-c-0.12.ebuild
deleted file mode 100644
index fcfb056..0000000
--- a/dev-libs/json-c/json-c-0.12.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-AUTOTOOLS_AUTORECONF=true
-
-inherit autotools-multilib
-
-DESCRIPTION="A JSON implementation in C"
-HOMEPAGE="https://github.com/json-c/json-c/wiki"
-SRC_URI="https://s3.amazonaws.com/json-c_releases/releases/${P}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0/2"
-KEYWORDS="*"
-IUSE="doc static-libs"
-
-RDEPEND="
-	abi_x86_32? (
-		!<=app-emulation/emul-linux-x86-baselibs-20140406-r3
-		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
-	)"
-
-# tests break otherwise
-AUTOTOOLS_IN_SOURCE_BUILD=1
-
-src_prepare() {
-	sed -i -e "s:-Werror::" Makefile.am.inc || die
-	autotools-multilib_src_prepare
-}
-
-src_test() {
-	export USE_VALGRIND=0 VERBOSE=1
-	autotools-multilib_src_test
-}
-
-src_install() {
-	use doc && HTML_DOCS=( "${S}"/doc/html )
-	autotools-multilib_src_install
-
-	# add symlink for projects not using pkgconfig
-	dosym ../json-c /usr/include/json-c/json
-}
diff --git a/dev-libs/json-c/json-c-0.14-r2.ebuild b/dev-libs/json-c/json-c-0.14-r2.ebuild
new file mode 100644
index 0000000..c3879d7
--- /dev/null
+++ b/dev-libs/json-c/json-c-0.14-r2.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CMAKE_ECLASS=cmake
+inherit cmake-multilib
+
+DESCRIPTION="A JSON implementation in C"
+HOMEPAGE="https://github.com/json-c/json-c/wiki"
+SRC_URI="https://s3.amazonaws.com/json-c_releases/releases/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/5"
+KEYWORDS="*"
+IUSE="doc static-libs threads"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-0.14-cmake-static-libs.patch"
+	"${FILESDIR}/${P}-security-fix.patch"
+)
+
+MULTILIB_WRAPPED_HEADERS=(
+	/usr/include/json-c/config.h
+)
+
+src_prepare() {
+	cmake_src_prepare
+}
+
+multilib_src_configure() {
+	local mycmakeargs=(
+		-DBUILD_DOCUMENTATION=$(multilib_native_usex doc)
+		-DBUILD_STATIC_LIBS=$(usex static-libs)
+		-DDISABLE_WERROR=ON
+		-DENABLE_THREADING=$(usex threads)
+	)
+
+	cmake_src_configure
+}
+
+multilib_src_compile() {
+	cmake_src_compile
+}
+
+multilib_src_test() {
+	multilib_is_native_abi && cmake_src_test
+}
+
+multilib_src_install_all() {
+	use doc && HTML_DOCS=( "${S}"/doc/html/. )
+	einstalldocs
+}
diff --git a/dev-libs/json-c/metadata.xml b/dev-libs/json-c/metadata.xml
index 03bcddc..ca10c6a 100644
--- a/dev-libs/json-c/metadata.xml
+++ b/dev-libs/json-c/metadata.xml
@@ -2,8 +2,16 @@
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
   <maintainer type="person">
-    <email>hwoarang@gentoo.org</email>
-    <name>Markos Chandras</name>
+    <email>jakov.smolic@sartura.hr</email>
+    <name>Jakov Smolic</name>
+  </maintainer>
+  <maintainer type="person">
+    <email>luka.perkov@sartura.hr</email>
+    <name>Luka Perkov</name>
+  </maintainer>
+  <maintainer type="project">
+    <email>proxy-maint@gentoo.org</email>
+    <name>Proxy Maintainers</name>
   </maintainer>
   <longdescription lang="en">
 "A JSON implementation in C" is probably the better description, and then
diff --git a/metadata/md5-cache/dev-libs/json-c-0.12 b/metadata/md5-cache/dev-libs/json-c-0.12
deleted file mode 100644
index 769be75..0000000
--- a/metadata/md5-cache/dev-libs/json-c-0.12
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=>=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=A JSON implementation in C
-EAPI=5
-HOMEPAGE=https://github.com/json-c/json-c/wiki
-IUSE=doc static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140406-r3 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )
-SLOT=0/2
-SRC_URI=https://s3.amazonaws.com/json-c_releases/releases/json-c-0.12.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	3727db64c7b960903d5033280f108080	eutils	06133990e861be0fe60c2b428fd025d9	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	b2f01ad412baf81650c23fcf0975fa33	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	209edad4a5c4812e7b2f8021650974f0
-_md5_=eb17a3f68c646d5d72a0074fac533d65
diff --git a/metadata/md5-cache/dev-libs/json-c-0.14-r2 b/metadata/md5-cache/dev-libs/json-c-0.14-r2
new file mode 100644
index 0000000..9c47a27
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/json-c-0.14-r2
@@ -0,0 +1,12 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test
+DESCRIPTION=A JSON implementation in C
+EAPI=7
+HOMEPAGE=https://github.com/json-c/json-c/wiki
+IUSE=doc static-libs threads abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+SLOT=0/5
+SRC_URI=https://s3.amazonaws.com/json-c_releases/releases/json-c-0.14.tar.gz
+_eclasses_=cmake-multilib	9400794da450ca9e38faef6eefbb3957	cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	06133990e861be0fe60c2b428fd025d9	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	b2f01ad412baf81650c23fcf0975fa33	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	209edad4a5c4812e7b2f8021650974f0	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=3451e10a3b0697d1b35b2b940b9f6632
