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? */ | #ifdef __EMX__			/* or include "fm.h" for HAVE_BCOPY? */ | ||||||
| #include <strings.h> | #include <strings.h> | ||||||
| #endif | #endif | ||||||
| #include <limits.h> |  | ||||||
| #include "Str.h" | #include "Str.h" | ||||||
| #include "myctype.h" | #include "myctype.h" | ||||||
|  |  | ||||||
| #define INITIAL_STR_SIZE 32 | #define INITIAL_STR_SIZE 32 | ||||||
| #define STR_SIZE_MAX (INT_MAX / 32) |  | ||||||
|  |  | ||||||
| #ifdef STR_DEBUG | #ifdef STR_DEBUG | ||||||
| /* This is obsolete, because "Str" can handle a '\0' character now. */ | /* 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 | #define GC_STR_H | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <limits.h> | ||||||
| #ifdef __EMX__ | #ifdef __EMX__ | ||||||
| #define strcasecmp	stricmp | #define strcasecmp	stricmp | ||||||
| #define strncasecmp	strnicmp | #define strncasecmp	strnicmp | ||||||
| @@ -66,7 +67,8 @@ Str Strfgetall(FILE *); | |||||||
|  |  | ||||||
| void Strgrow(Str s); | 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(x,y)                  strcmp((x)->ptr,(y)->ptr) | ||||||
| #define Strcmp_charp(x,y)            strcmp((x)->ptr,(y)) | #define Strcmp_charp(x,y)            strcmp((x)->ptr,(y)) | ||||||
| #define Strncmp(x,y,n)               strncmp((x)->ptr,(y)->ptr,(n)) | #define Strncmp(x,y,n)               strncmp((x)->ptr,(y)->ptr,(n)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user