]> git.pld-linux.org Git - packages/jansson.git/commitdiff
0017-Fix-error-handling-in-json_pack.patch added auto/th/jansson-2.11-2
authorJacek Konieczny <j.konieczny@eggsoft.pl>
Thu, 6 Sep 2018 07:35:51 +0000 (09:35 +0200)
committerJacek Konieczny <j.konieczny@eggsoft.pl>
Thu, 6 Sep 2018 07:35:51 +0000 (09:35 +0200)
from Asterisk

Release: 2

0017-Fix-error-handling-in-json_pack.patch [new file with mode: 0644]
jansson.spec

diff --git a/0017-Fix-error-handling-in-json_pack.patch b/0017-Fix-error-handling-in-json_pack.patch
new file mode 100644 (file)
index 0000000..affa6c9
--- /dev/null
@@ -0,0 +1,103 @@
+From 15105b66b4df387037b670ac713584194ea10c2f Mon Sep 17 00:00:00 2001
+From: Maxim Zhukov <mussitantesmortem@gmail.com>
+Date: Mon, 12 Mar 2018 17:39:04 +0300
+Subject: [PATCH 17/22] Fix error handling in json_pack
+
+Changes to test/ removed.
+
+Fixed a bug where the error message was not filled if an empty object
+was passed to the json_pack.
+
+Fixes #271
+---
+ src/pack_unpack.c           | 64 ++++++++++++++++++-------------------
+ test/suites/api/test_pack.c |  8 +++++
+ 2 files changed, 40 insertions(+), 32 deletions(-)
+
+diff --git a/src/pack_unpack.c b/src/pack_unpack.c
+index 4026fd9..6461c06 100644
+--- a/src/pack_unpack.c
++++ b/src/pack_unpack.c
+@@ -348,6 +348,36 @@ static json_t *pack_string(scanner_t *s, va_list *ap)
+     }
+ }
++static json_t *pack_object_inter(scanner_t *s, va_list *ap, int need_incref)
++{
++    json_t *json;
++    char ntoken;
++
++    next_token(s);
++    ntoken = token(s);
++
++    if (ntoken != '?')
++        prev_token(s);
++
++    json = va_arg(*ap, json_t *);
++
++    if (json)
++        return need_incref ? json_incref(json) : json;
++
++    switch (ntoken) {
++        case '?':
++            return json_null();
++        case '*':
++            return NULL;
++        default:
++            break;
++    }
++
++    set_error(s, "<args>", json_error_null_value, "NULL object key");
++    s->has_error = 1;
++    return NULL;
++}
++
+ static json_t *pack(scanner_t *s, va_list *ap)
+ {
+     switch(token(s)) {
+@@ -376,40 +406,10 @@ static json_t *pack(scanner_t *s, va_list *ap)
+             return json_real(va_arg(*ap, double));
+         case 'O': /* a json_t object; increments refcount */
+-        {
+-            int nullable;
+-            json_t *json;
+-
+-            next_token(s);
+-            nullable = token(s) == '?';
+-            if (!nullable)
+-                prev_token(s);
+-
+-            json = va_arg(*ap, json_t *);
+-            if (!json && nullable) {
+-                return json_null();
+-            } else {
+-                return json_incref(json);
+-            }
+-        }
++            return pack_object_inter(s, ap, 1);
+         case 'o': /* a json_t object; doesn't increment refcount */
+-        {
+-            int nullable;
+-            json_t *json;
+-
+-            next_token(s);
+-            nullable = token(s) == '?';
+-            if (!nullable)
+-                prev_token(s);
+-
+-            json = va_arg(*ap, json_t *);
+-            if (!json && nullable) {
+-                return json_null();
+-            } else {
+-                return json;
+-            }
+-        }
++            return pack_object_inter(s, ap, 0);
+         default:
+             set_error(s, "<format>", json_error_invalid_format, "Unexpected format character '%c'",
+-- 
+2.17.1
+
index 9e4552832b3bc3de40181b0cf326e6b8cd3837a5..27979d927bd7f11ac0c209a2cb4dd5abbdd06141 100644 (file)
@@ -7,11 +7,12 @@ Summary:      C library for encoding, decoding and manipulating JSON data
 Summary(pl.UTF-8):     Biblioteka C do kodowania, dekodowania i obróbki danych JSON
 Name:          jansson
 Version:       2.11
-Release:       1
+Release:       2
 License:       MIT
 Group:         Libraries
 Source0:       http://www.digip.org/jansson/releases/%{name}-%{version}.tar.bz2
 # Source0-md5: 289ca8cbd2df31de9bda7e5220754d25
+Patch0:                0017-Fix-error-handling-in-json_pack.patch
 URL:           http://www.digip.org/jansson/
 BuildRequires: autoconf >= 2.60
 BuildRequires: automake >= 1:1.10
@@ -77,6 +78,7 @@ Dokumentacja API biblioteki %{name}.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
 %{__libtoolize}
This page took 0.159205 seconds and 4 git commands to generate.