[Python-checkins] CVS: python/dist/src/Objects complexobject.c,2.51,2.52

Barry Warsaw bwarsaw@users.sourceforge.net
Wed, 28 Nov 2001 12:50:58 -0800


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv12794

Modified Files:
	complexobject.c 
Log Message:
complex_to_buf(), complex_subtype_from_c_complex(): Conversion of
sprintf() to PyOS_snprintf() for buffer overrun avoidance.

complex_print(), complex_repr(), complex_str(): Call complex_to_buf()
passing in sizeof(buf).


Index: complexobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v
retrieving revision 2.51
retrieving revision 2.52
diff -C2 -d -r2.51 -r2.52
*** complexobject.c	2001/10/25 18:07:22	2.51
--- complexobject.c	2001/11/28 20:50:56	2.52
***************
*** 271,281 ****
  
  static void
! complex_to_buf(char *buf, PyComplexObject *v, int precision)
  {
  	if (v->cval.real == 0.)
! 		sprintf(buf, "%.*gj", precision, v->cval.imag);
  	else
! 		sprintf(buf, "(%.*g%+.*gj)", precision, v->cval.real,
! 					     precision, v->cval.imag);
  }
  
--- 271,283 ----
  
  static void
! complex_to_buf(char *buf, int bufsz, PyComplexObject *v, int precision)
  {
  	if (v->cval.real == 0.)
! 		PyOS_snprintf(buf, bufsz, "%.*gj",
! 			      precision, v->cval.imag);
  	else
! 		PyOS_snprintf(buf, bufsz, "(%.*g%+.*gj)",
! 			      precision, v->cval.real,
! 			      precision, v->cval.imag);
  }
  
***************
*** 284,288 ****
  {
  	char buf[100];
! 	complex_to_buf(buf, v,
  		       (flags & Py_PRINT_RAW) ? PREC_STR : PREC_REPR);
  	fputs(buf, fp);
--- 286,290 ----
  {
  	char buf[100];
! 	complex_to_buf(buf, sizeof(buf), v,
  		       (flags & Py_PRINT_RAW) ? PREC_STR : PREC_REPR);
  	fputs(buf, fp);
***************
*** 294,298 ****
  {
  	char buf[100];
! 	complex_to_buf(buf, v, PREC_REPR);
  	return PyString_FromString(buf);
  }
--- 296,300 ----
  {
  	char buf[100];
! 	complex_to_buf(buf, sizeof(buf), v, PREC_REPR);
  	return PyString_FromString(buf);
  }
***************
*** 302,306 ****
  {
  	char buf[100];
! 	complex_to_buf(buf, v, PREC_STR);
  	return PyString_FromString(buf);
  }
--- 304,308 ----
  {
  	char buf[100];
! 	complex_to_buf(buf, sizeof(buf), v, PREC_STR);
  	return PyString_FromString(buf);
  }
***************
*** 753,757 ****
  			PyFPE_END_PROTECT(z)
  				if (errno != 0) {
! 					sprintf(buffer,
  					  "float() out of range: %.150s", s);
  					PyErr_SetString(
--- 755,759 ----
  			PyFPE_END_PROTECT(z)
  				if (errno != 0) {
! 					PyOS_snprintf(buffer, sizeof(buffer),
  					  "float() out of range: %.150s", s);
  					PyErr_SetString(