Fix potential heap buffer corruption due to Strgrow
If Str.length = 5 and area_size = 6, the result of Strgrow is still area_size = 6. For such case, Strcat_char and Strinsert_char will overflow one byte.
This commit is contained in:
		
							
								
								
									
										4
									
								
								Str.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Str.c
									
									
									
									
									
								
							| @@ -232,8 +232,8 @@ Strgrow(Str x) | |||||||
| { | { | ||||||
|     char *old = x->ptr; |     char *old = x->ptr; | ||||||
|     int newlen; |     int newlen; | ||||||
|     newlen = x->length * 6 / 5; |     newlen = x->area_size * 6 / 5; | ||||||
|     if (newlen == x->length) |     if (newlen == x->area_size) | ||||||
| 	newlen += 2; | 	newlen += 2; | ||||||
|     x->ptr = GC_MALLOC_ATOMIC(newlen); |     x->ptr = GC_MALLOC_ATOMIC(newlen); | ||||||
|     x->area_size = newlen; |     x->area_size = newlen; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user