@@ -15,19 +15,30 @@ void print_safe_buffer(struct safe_buffer const *sb)
15
15
size_t snprint_safe_buffer (char * s , size_t size , struct safe_buffer const * sb )
16
16
{
17
17
size_t count = 0 ;
18
+ int n ;
18
19
19
- count += snprintf ((s + count ), (size - count ), "unsigned char expected[] = { /* sb.allocated = %ld, sb.used = %ld */" , sb -> allocated , sb -> used );
20
+ n = snprintf ((s + count ), (size - count ), "unsigned char expected[] = { /* sb.allocated = %ld, sb.used = %ld */" , sb -> allocated , sb -> used );
21
+ if (n < 0 || n >= size - count ) {
22
+ return count ;
23
+ }
24
+ count += n ;
20
25
26
+ char * nextline = "\n\t" ;
27
+ char * nextbyte = " " ;
21
28
for (size_t i = 0 ; i < sb -> used ; ++ i ) {
22
- if (i % 8 == 0 ) {
23
- count + = snprintf ((s + count ), (size - count ), "\n\t0x% 02x," , sb -> buffer [i ]);
24
- } else {
25
- count += snprintf (( s + count ), ( size - count ), " 0x%02x," , sb -> buffer [ i ]) ;
29
+ char * nextspace = (i % 8 == 0 ) ? nextline : nextbyte ;
30
+ n = snprintf ((s + count ), (size - count ), "%s0x% 02x," , nextspace , sb -> buffer [i ]);
31
+ if ( n < 0 || n >= size - count ) {
32
+ return count ;
26
33
}
34
+ count += n ;
27
35
}
28
36
/* Do not remove the final byte's comma. Only JSON requires the comma is
29
37
* removed, and this is not JSON. */
30
-
31
- count += snprintf ((s + count ), (size - count ), "\n};\n" );
38
+ n = snprintf ((s + count ), (size - count ), "\n};\n" );
39
+ if (n < 0 || n >= size - count ) {
40
+ return count ;
41
+ }
42
+ count += n ;
32
43
return count ;
33
44
}
0 commit comments