diff options
| author | grischka <grischka> | 2009-04-03 20:52:24 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2009-04-18 15:07:28 +0200 |
| commit | c80f81c19958fa219500a150513f9b2a6ab55c35 (patch) | |
| tree | 2a6417985f45f7e1d10b575b6e6177b71d25bc1e /win32/tools | |
| parent | 5818945ef69b4182c178704aa2c02446e739532e (diff) | |
| download | tinycc-c80f81c19958fa219500a150513f9b2a6ab55c35.tar.gz tinycc-c80f81c19958fa219500a150513f9b2a6ab55c35.tar.bz2 | |
tiny_libmaker: fix function array overflow
Diffstat (limited to 'win32/tools')
| -rw-r--r-- | win32/tools/tiny_libmaker.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/win32/tools/tiny_libmaker.c b/win32/tools/tiny_libmaker.c index efda78a..d45ec70 100644 --- a/win32/tools/tiny_libmaker.c +++ b/win32/tools/tiny_libmaker.c @@ -203,8 +203,8 @@ int main(int argc, char **argv) return 2; } - funcmax = 1000; - afpos = realloc(NULL, funcmax); // 250 func + funcmax = 250; + afpos = realloc(NULL, funcmax * sizeof *afpos); // 250 func memcpy(&arhdro.ar_mode, "100666", 6); //iarg = 1; @@ -264,11 +264,11 @@ int main(int argc, char **argv) anames = realloc(anames, strpos+istrlen); strcpy(anames + strpos, strtab + sym->st_name); strpos += istrlen; - if (funccnt >= funcmax) { - afpos = realloc(NULL, funcmax+1000); // 250 func more - funcmax += 1000; + if (++funccnt >= funcmax) { + funcmax += 250; + afpos = realloc(afpos, funcmax * sizeof *afpos); // 250 func more } - afpos[++funccnt] = fpos; + afpos[funccnt] = fpos; } } } |
