@@ -733,7 +733,8 @@ xmlcharrefreplace(_PyBytesWriter *writer, char *str,
733
733
734
734
/* generate replacement */
735
735
for (i = collstart ; i < collend ; ++ i ) {
736
- size = sprintf (str , "&#%d;" , PyUnicode_READ (kind , data , i ));
736
+ size = snprintf (str , sizeof (str ),
737
+ "&#%d;" , PyUnicode_READ (kind , data , i ));
737
738
if (size < 0 ) {
738
739
return NULL ;
739
740
}
@@ -2449,39 +2450,47 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
2449
2450
case 'u' :
2450
2451
case 'x' :
2451
2452
{
2452
- /* used by sprintf */
2453
+ /* used by snprintf */
2453
2454
char buffer [MAX_LONG_LONG_CHARS ];
2454
2455
Py_ssize_t arglen ;
2455
2456
2456
2457
if (* f == 'u' ) {
2457
2458
if (longflag ) {
2458
- len = sprintf (buffer , "%lu" , va_arg (* vargs , unsigned long ));
2459
+ len = snprintf (buffer , sizeof (buffer ),
2460
+ "%lu" , va_arg (* vargs , unsigned long ));
2459
2461
}
2460
2462
else if (longlongflag ) {
2461
- len = sprintf (buffer , "%llu" , va_arg (* vargs , unsigned long long));
2463
+ len = snprintf (buffer , sizeof (buffer ),
2464
+ "%llu" , va_arg (* vargs , unsigned long long));
2462
2465
}
2463
2466
else if (size_tflag ) {
2464
- len = sprintf (buffer , "%zu" , va_arg (* vargs , size_t ));
2467
+ len = snprintf (buffer , sizeof (buffer ),
2468
+ "%zu" , va_arg (* vargs , size_t ));
2465
2469
}
2466
2470
else {
2467
- len = sprintf (buffer , "%u" , va_arg (* vargs , unsigned int ));
2471
+ len = snprintf (buffer , sizeof (buffer ),
2472
+ "%u" , va_arg (* vargs , unsigned int ));
2468
2473
}
2469
2474
}
2470
2475
else if (* f == 'x' ) {
2471
- len = sprintf (buffer , "%x" , va_arg (* vargs , int ));
2476
+ len = snprintf (buffer , sizeof ( buffer ) , "%x" , va_arg (* vargs , int ));
2472
2477
}
2473
2478
else {
2474
2479
if (longflag ) {
2475
- len = sprintf (buffer , "%li" , va_arg (* vargs , long ));
2480
+ len = snprintf (buffer , sizeof (buffer ),
2481
+ "%li" , va_arg (* vargs , long ));
2476
2482
}
2477
2483
else if (longlongflag ) {
2478
- len = sprintf (buffer , "%lli" , va_arg (* vargs , long long ));
2484
+ len = snprintf (buffer , sizeof (buffer ),
2485
+ "%lli" , va_arg (* vargs , long long ));
2479
2486
}
2480
2487
else if (size_tflag ) {
2481
- len = sprintf (buffer , "%zi" , va_arg (* vargs , Py_ssize_t ));
2488
+ len = snprintf (buffer , sizeof (buffer ),
2489
+ "%zi" , va_arg (* vargs , Py_ssize_t ));
2482
2490
}
2483
2491
else {
2484
- len = sprintf (buffer , "%i" , va_arg (* vargs , int ));
2492
+ len = snprintf (buffer , sizeof (buffer ),
2493
+ "%i" , va_arg (* vargs , int ));
2485
2494
}
2486
2495
}
2487
2496
assert (len >= 0 );
@@ -2530,7 +2539,7 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
2530
2539
{
2531
2540
char number [MAX_LONG_LONG_CHARS ];
2532
2541
2533
- len = sprintf (number , "%p" , va_arg (* vargs , void * ));
2542
+ len = snprintf (number , sizeof ( number ) , "%p" , va_arg (* vargs , void * ));
2534
2543
assert (len >= 0 );
2535
2544
2536
2545
/* %p is ill-defined: ensure leading 0x. */
@@ -8104,7 +8113,8 @@ charmap_encoding_error(
8104
8113
for (collpos = collstartpos ; collpos < collendpos ; ++ collpos ) {
8105
8114
char buffer [2 + 29 + 1 + 1 ];
8106
8115
char * cp ;
8107
- sprintf (buffer , "&#%d;" , (int )PyUnicode_READ_CHAR (unicode , collpos ));
8116
+ snprintf (buffer , sizeof (buffer ),
8117
+ "&#%d;" , (int )PyUnicode_READ_CHAR (unicode , collpos ));
8108
8118
for (cp = buffer ; * cp ; ++ cp ) {
8109
8119
x = charmapencode_output (* cp , mapping , res , respos );
8110
8120
if (x == enc_EXCEPTION )
0 commit comments