mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-12 19:30:04 +01:00
Use json_object_object_add_ex if defined.
The json-c lib changed json_object_object_add() prototype to return int, this is backward incompatible.
This commit is contained in:
@@ -352,6 +352,7 @@ LIBS=$saved_LIBS
|
||||
|
||||
dnl Check for JSON-C used in LUKS2
|
||||
PKG_CHECK_MODULES([JSON_C], [json-c])
|
||||
AC_CHECK_DECLS([json_object_object_add_ex], [], [], [#include <json-c/json.h>])
|
||||
|
||||
dnl Crypto backend configuration.
|
||||
AC_ARG_WITH([crypto_backend],
|
||||
|
||||
@@ -1963,24 +1963,24 @@ void LUKS2_hdr_repair(struct crypt_device *cd, json_object *hdr_jobj)
|
||||
|
||||
void json_object_object_del_by_uint(json_object *jobj, unsigned key)
|
||||
{
|
||||
int r;
|
||||
char key_name[4];
|
||||
char key_name[16];
|
||||
|
||||
r = snprintf(key_name, sizeof(key_name), "%u", key);
|
||||
if (r >= 0 && (size_t)r < sizeof(key_name))
|
||||
json_object_object_del(jobj, key_name);
|
||||
if (snprintf(key_name, sizeof(key_name), "%u", key) < 1)
|
||||
return;
|
||||
json_object_object_del(jobj, key_name);
|
||||
}
|
||||
|
||||
int json_object_object_add_by_uint(json_object *jobj, unsigned key, json_object *jobj_val)
|
||||
{
|
||||
int r;
|
||||
char key_name[4];
|
||||
char key_name[16];
|
||||
|
||||
r = snprintf(key_name, sizeof(key_name), "%u", key);
|
||||
if (r < 0 || (size_t)r >= sizeof(key_name))
|
||||
if (snprintf(key_name, sizeof(key_name), "%u", key) < 1)
|
||||
return -EINVAL;
|
||||
|
||||
json_object_object_add(jobj, key_name, jobj_val);
|
||||
|
||||
return 0;
|
||||
#if HAVE_DECL_JSON_OBJECT_OBJECT_ADD_EX
|
||||
return json_object_object_add_ex(jobj, key_name, jobj_val, 0) ? -ENOMEM : 0;
|
||||
#else
|
||||
json_object_object_add(jobj, key_name, jobj_val);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user