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

Barry Warsaw bwarsaw@users.sourceforge.net
2001年11月28日 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(

AltStyle によって変換されたページ (->オリジナル) /