Explorar o código

core: added core parameter mem_add_size

- default value 0
- to be used to add extra space to allocated chunks for safety purposes
  when external libraries expose buffer overflows
Daniel-Constantin Mierla hai 1 ano
pai
achega
5430f7e1ea
Modificáronse 4 ficheiros con 8 adicións e 0 borrados
  1. 2 0
      src/core/cfg.lex
  2. 3 0
      src/core/cfg.y
  3. 2 0
      src/core/globals.h
  4. 1 0
      src/main.c

+ 2 - 0
src/core/cfg.lex

@@ -385,6 +385,7 @@ MEMLOG		"memlog"|"mem_log"
 MEMDBG		"memdbg"|"mem_dbg"
 MEMSUM		"mem_summary"
 MEMSAFETY	"mem_safety"
+MEMADDSIZE	"mem_add_size"
 MEMJOIN		"mem_join"
 MEMSTATUSMODE		"mem_status_mode"
 CORELOG		"corelog"|"core_log"
@@ -874,6 +875,7 @@ IMPORTFILE      "import_file"
 <INITIAL>{MEMDBG}	{ count(); yylval.strval=yytext; return MEMDBG; }
 <INITIAL>{MEMSUM}	{ count(); yylval.strval=yytext; return MEMSUM; }
 <INITIAL>{MEMSAFETY}	{ count(); yylval.strval=yytext; return MEMSAFETY; }
+<INITIAL>{MEMADDSIZE}	{ count(); yylval.strval=yytext; return MEMADDSIZE; }
 <INITIAL>{MEMJOIN}	{ count(); yylval.strval=yytext; return MEMJOIN; }
 <INITIAL>{MEMSTATUSMODE}	{ count(); yylval.strval=yytext; return MEMSTATUSMODE; }
 <INITIAL>{SIP_PARSER_LOG_ONELINE}  { count(); yylval.strval=yytext; return SIP_PARSER_LOG_ONELINE; }

+ 3 - 0
src/core/cfg.y

@@ -401,6 +401,7 @@ extern char *default_routename;
 %token MEMDBG
 %token MEMSUM
 %token MEMSAFETY
+%token MEMADDSIZE
 %token MEMJOIN
 %token MEMSTATUSMODE
 %token SIP_PARSER_LOG_ONELINE
@@ -1072,6 +1073,8 @@ assign_stm:
 	| MEMSUM EQUAL error { yyerror("int value expected"); }
 	| MEMSAFETY EQUAL intno { default_core_cfg.mem_safety=$3; }
 	| MEMSAFETY EQUAL error { yyerror("int value expected"); }
+	| MEMADDSIZE EQUAL intno { ksr_mem_add_size=$3; }
+	| MEMADDSIZE EQUAL error { yyerror("int value expected"); }
 	| MEMJOIN EQUAL intno { default_core_cfg.mem_join=$3; }
 	| MEMJOIN EQUAL error { yyerror("int value expected"); }
 	| MEMSTATUSMODE EQUAL intno { default_core_cfg.mem_status_mode=$3; }

+ 2 - 0
src/core/globals.h

@@ -165,6 +165,8 @@ extern int reply_to_via;
 extern int _ksr_is_main;
 extern int fixup_complete;
 
+extern int ksr_mem_add_size;
+
 /* debugging level for dumping memory status */
 extern int memlog;
 /* debugging level for malloc debugging messages */

+ 1 - 0
src/main.c

@@ -547,6 +547,7 @@ static int *_sr_instance_started = NULL;
 
 int ksr_cfg_print_mode = 0;
 int ksr_atexit_mode = 0;
+int ksr_mem_add_size = 0;
 
 int ksr_wait_worker1_mode = 0;
 int ksr_wait_worker1_time = 4000000;