Check STR_SIZE_MAX in Strcat_char
This commit is contained in:
		
							
								
								
									
										2
									
								
								Str.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Str.c
									
									
									
									
									
								
							| @@ -21,12 +21,10 @@ | ||||
| #ifdef __EMX__			/* or include "fm.h" for HAVE_BCOPY? */ | ||||
| #include <strings.h> | ||||
| #endif | ||||
| #include <limits.h> | ||||
| #include "Str.h" | ||||
| #include "myctype.h" | ||||
|  | ||||
| #define INITIAL_STR_SIZE 32 | ||||
| #define STR_SIZE_MAX (INT_MAX / 32) | ||||
|  | ||||
| #ifdef STR_DEBUG | ||||
| /* This is obsolete, because "Str" can handle a '\0' character now. */ | ||||
|   | ||||
							
								
								
									
										4
									
								
								Str.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Str.h
									
									
									
									
									
								
							| @@ -17,6 +17,7 @@ | ||||
| #define GC_STR_H | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <limits.h> | ||||
| #ifdef __EMX__ | ||||
| #define strcasecmp	stricmp | ||||
| #define strncasecmp	strnicmp | ||||
| @@ -66,7 +67,8 @@ Str Strfgetall(FILE *); | ||||
|  | ||||
| void Strgrow(Str s); | ||||
|  | ||||
| #define Strcat_char(x,y) (((x)->length+1>=(x)->area_size)?Strgrow(x),0:0,(x)->ptr[(x)->length++]=(y),(x)->ptr[(x)->length]=0) | ||||
| #define STR_SIZE_MAX (INT_MAX / 32) | ||||
| #define Strcat_char(x,y) (((x)->length+1>=STR_SIZE_MAX)?0:(((x)->length+1>=(x)->area_size)?Strgrow(x),0:0,(x)->ptr[(x)->length++]=(y),(x)->ptr[(x)->length]=0)) | ||||
| #define Strcmp(x,y)                  strcmp((x)->ptr,(y)->ptr) | ||||
| #define Strcmp_charp(x,y)            strcmp((x)->ptr,(y)) | ||||
| #define Strncmp(x,y,n)               strncmp((x)->ptr,(y)->ptr,(n)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user