]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.strsize.d
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / cddl / contrib / opensolaris / cmd / dtrace / test / tst / common / json / tst.strsize.d
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 }