From 15520de3aa5100b148757e550b87a73798192b92 Mon Sep 17 00:00:00 2001 From: Tatsuya Kinoshita Date: Sun, 21 Mar 2021 12:51:08 +0900 Subject: Check STR_SIZE_MAX in Strcat_char --- Str.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Str.h') diff --git a/Str.h b/Str.h index 248815d..64e3dbc 100644 --- a/Str.h +++ b/Str.h @@ -17,6 +17,7 @@ #define GC_STR_H #include #include +#include #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)) -- cgit v1.2.3