ref: b878450725de85dc874f42bc9de4ce1d5087f900
parent: 68571320fa2ba4f993199370d60dc4dbd114bea8
author: cinap_lenrek <[email protected]>
date: Wed Jun 1 14:31:21 EDT 2016
mk: remove buggy and unneeded syminit() function (thanks qurstuv) syminit() attemts to reset the symbol table by freeing all the hash table entries, tho the code is buggy having a obviously use after free bug. as syminit() is only called once in main when it does not contain any symbols, the bug never occured. removing the unneccesary code alltogether.
--- a/sys/src/cmd/mk/fns.h
+++ b/sys/src/cmd/mk/fns.h
@@ -65,7 +65,6 @@
Word *stow(char*);
void subst(char*, char*, char*, int);
void symdel(char*, int);
-void syminit(void);
Symtab *symlook(char*, int, void*);
void symstat(void);
void symtraverse(int, void(*)(Symtab*));
--- a/sys/src/cmd/mk/main.c
+++ b/sys/src/cmd/mk/main.c
@@ -119,7 +119,6 @@
if(aflag)
iflag = 1;
usage();
- syminit();
initenv();
usage();
--- a/sys/src/cmd/mk/symtab.c
+++ b/sys/src/cmd/mk/symtab.c
@@ -4,18 +4,6 @@
#define HASHMUL 79L /* this is a good value */
static Symtab *hash[NHASH];
-void
-syminit(void)
-{
- Symtab **s, *ss;
-
- for(s = hash; s < &hash[NHASH]; s++){
- for(ss = *s; ss; ss = ss->next)
- free((char *)ss);
- *s = 0;
- }
-}
-
Symtab *
symlook(char *sym, int space, void *install)
{