1/*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source.  A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12/*
13 * Copyright 2012, Joyent, Inc.  All rights reserved.
14 */
15
16/*
17 * ASSERTION:
18 *   json() run time must be bounded above by strsize.  This test makes strsize
19 *   small and deliberately overflows it to prove we bail and return NULL in
20 *   the event that we run off the end of the string.
21 *
22 */
23
24#pragma D option quiet
25#pragma D option strsize=18
26
27BEGIN
28{
29	in = "{\"a\":         1024}"; /* length == 19 */
30	out = json(in, "a");
31	printf("|%s|\n%s\n\n", in, out != NULL ? out : "<NULL>");
32
33	in = "{\"a\": 1024}"; /* length == 11 */
34	out = json(in, "a");
35	printf("|%s|\n%s\n\n", in, out != NULL ? out : "<NULL>");
36
37	in = "{\"a\":false,\"b\":true}"; /* length == 20 */
38	out = json(in, "b");
39	printf("|%s|\n%s\n\n", in, out != NULL ? out : "<NULL>");
40
41	in = "{\"a\":false,\"b\":20}"; /* length == 18 */
42	out = json(in, "b");
43	printf("|%s|\n%s\n\n", in, out != NULL ? out : "<NULL>");
44
45	exit(0);
46}
47
48ERROR
49{
50	exit(1);
51}
52