diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-06-01 18:31:21 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-06-01 18:31:21 +0200 |
commit | b878450725de85dc874f42bc9de4ce1d5087f900 (patch) | |
tree | adb8c6c416e0ccb930989ab4aa8e8ffb117acc04 | |
parent | 68571320fa2ba4f993199370d60dc4dbd114bea8 (diff) |
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.
-rw-r--r-- | sys/src/cmd/mk/fns.h | 1 | ||||
-rw-r--r-- | sys/src/cmd/mk/main.c | 1 | ||||
-rw-r--r-- | sys/src/cmd/mk/symtab.c | 12 |
3 files changed, 0 insertions, 14 deletions
diff --git a/sys/src/cmd/mk/fns.h b/sys/src/cmd/mk/fns.h index e25d90c1c..ff43ba574 100644 --- a/sys/src/cmd/mk/fns.h +++ b/sys/src/cmd/mk/fns.h @@ -65,7 +65,6 @@ void shprint(char*, Envy*, Bufblock*); 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*)); diff --git a/sys/src/cmd/mk/main.c b/sys/src/cmd/mk/main.c index 08bb3ab26..a81e83753 100644 --- a/sys/src/cmd/mk/main.c +++ b/sys/src/cmd/mk/main.c @@ -119,7 +119,6 @@ main(int argc, char **argv) if(aflag) iflag = 1; usage(); - syminit(); initenv(); usage(); diff --git a/sys/src/cmd/mk/symtab.c b/sys/src/cmd/mk/symtab.c index 57129ae67..dc47f1669 100644 --- 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) { |