aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrischka <grischka>2009-04-03 20:52:24 +0200
committergrischka <grischka>2009-04-18 15:07:28 +0200
commitc80f81c19958fa219500a150513f9b2a6ab55c35 (patch)
tree2a6417985f45f7e1d10b575b6e6177b71d25bc1e
parent5818945ef69b4182c178704aa2c02446e739532e (diff)
downloadtinycc-c80f81c19958fa219500a150513f9b2a6ab55c35.tar.gz
tinycc-c80f81c19958fa219500a150513f9b2a6ab55c35.tar.bz2
tiny_libmaker: fix function array overflow
-rw-r--r--win32/tools/tiny_libmaker.c12
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;
}
}
}