Skip to content

Commit

Permalink
OS-5047 nvlist_print_json assertion failure
Browse files Browse the repository at this point in the history
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
  • Loading branch information
bahamas10 committed Dec 18, 2015
1 parent 380cf67 commit e619b08
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 6 deletions.
11 changes: 5 additions & 6 deletions usr/src/lib/libnvpair/nvpair_json.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ nvlist_rasnprintf(char **bufp, size_t *blen, off_t *boff, char *input, ...)
{
int ret;
va_list ap;
size_t size, asize;
size_t size;
char *b;

if (*bufp == NULL) {
Expand All @@ -56,13 +56,12 @@ nvlist_rasnprintf(char **bufp, size_t *blen, off_t *boff, char *input, ...)
/* E_SEC_PRINTF_VAR_FMT */
ret = vsnprintf(*bufp + *boff, size, input, ap);
va_end(ap);
if (ret < 0) {
va_end(ap);
if (ret < 0)
return (-1);
}

if (ret >= size) {
asize = *blen;
while (ret >= asize)
size_t asize = *blen;
while (ret + *boff >= asize)
asize += 1024;
if ((b = realloc(*bufp, asize)) == NULL)
return (-1);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/ksh
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2015, Joyent, Inc.
#

DIR=$(dirname $(whence $0))
. ${DIR}/json_common

BASELINE="$(cat <<EOF
{\
"o":[\
$(for i in {1..50}; do
printf '"%s",' 'some_very_big_string_that_takes_up_space'
done)\
"end"\
]\
}
EOF)"
OUTPUT="$(${DIR}/../../bin/print_json <<-EOF
add_string_array "o" $(for i in {1..50}; do
printf '"%s" ' 'some_very_big_string_that_takes_up_space'
done)"end";
EOF)"
complete

0 comments on commit e619b08

Please sign in to comment.