This patch tweaks a few things.

1. In json_parse_json_string() we declare a character array buff[],
fill it with nuls, and never refer to it again.  I eliminated it.

2. A few lines below that, we use memset() to clear a three-character
buffer.  I replaced the memset() with an initializer clause.

3. in json_handle_error() we were relying on the osrf_clearbuf macro
to add a terminal nul.  However the plan is for this macro to become
a no-op someday.  I added the nul manually.

Scott McKellar
http://home.swbell.net/mck9/ct/

Developer's Certificate of Origin 1.1 By making a contribution to
this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license indicated
in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source license
and I have the right under that license to submit that work with
modifications, whether created in whole or in part by me, under the
same open source license (unless I am permitted to submit under a
different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person
who certified (a), (b) or (c) and I have not modified it; and

(d) In the case of each of (a), (b), or (c), I understand and agree
that this project and the contribution are public and that a record
of the contribution (including all personal information I submit
with it, including my sign-off) is maintained indefinitely and may
be redistributed consistent with this project or the open source
license indicated in the file.
*** ./trunk/src/libopensrf/osrf_legacy_json.c	2008-04-12 10:15:57.000000000 -0500
--- ./trunk-mod/src/libopensrf/osrf_legacy_json.c	2008-04-13 11:09:29.000000000 -0500
***************
*** 478,494 ****
  						return json_handle_error(string, index,
  							"json_parse_json_string(): truncated escaped unicode"); }
  
- 					char buff[5];
- 					osrf_clearbuf(buff, sizeof(buff));
- 					memcpy(buff, string + (*index), 4);
- 
- 
  					/* ----------------------------------------------------------------------- */
  					/* ----------------------------------------------------------------------- */
  					/* The following chunk was borrowed with permission from 
  						json-c http://oss.metaparadigm.com/json-c/ */
! 					unsigned char utf_out[3];
! 					memset(utf_out, 0, sizeof(utf_out));
  
  					#define hexdigit(x) ( ((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
  
--- 478,488 ----
  						return json_handle_error(string, index,
  							"json_parse_json_string(): truncated escaped unicode"); }
  
  					/* ----------------------------------------------------------------------- */
  					/* ----------------------------------------------------------------------- */
  					/* The following chunk was borrowed with permission from 
  						json-c http://oss.metaparadigm.com/json-c/ */
! 					unsigned char utf_out[3] = { '\0', '\0', '\0' };
  
  					#define hexdigit(x) ( ((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
  
***************
*** 695,703 ****
  	osrf_clearbuf(buf, sizeof(buf));
  
  	if(*index > 30)
! 		strncpy( buf, string + (*index - 30), 59 );
  	else
! 		strncpy( buf, string, 59 );
  
  	fprintf(stderr, 
  			"\nError parsing json string at charracter %c "
--- 689,699 ----
  	osrf_clearbuf(buf, sizeof(buf));
  
  	if(*index > 30)
! 		strncpy( buf, string + (*index - 30), sizeof(buf) - 1 );
  	else
! 		strncpy( buf, string, sizeof(buf) - 1 );
! 
! 	buf[ sizeof(buf) - 1 ] = '\0';
  
  	fprintf(stderr, 
  			"\nError parsing json string at charracter %c "

Reply via email to