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 
27 BEGIN
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 
48 ERROR
49 {
50 	exit(1);
51 }
52