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 }