]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/ld: another use-after-free
authorRuss Cox <rsc@golang.org>
Thu, 14 Mar 2013 18:35:47 +0000 (14:35 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 14 Mar 2013 18:35:47 +0000 (14:35 -0400)
This only shows up in the duplicate symbol error message.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/7486053

src/cmd/5l/obj.c
src/cmd/6l/obj.c
src/cmd/8l/obj.c

index d25fefebbabe2e01d3d3ae3c92145178c0e7d1ea..f70cb6c336eadad43f18c7f351f04d905f3cddec 100644 (file)
@@ -428,6 +428,7 @@ ldobj1(Biobuf *f, char *pkg, int64 len, char *pn)
        ntext = 0;
        eof = Boffset(f) + len;
        src[0] = 0;
+       pn = estrdup(pn); // we keep it in Sym* references
 
 newloop:
        memset(h, 0, sizeof(h));
index 6ea88de273aea8c0ca4a0b9fef188060f4b12039..91569794bf4a5b42221608543803fca9eb1c6149 100644 (file)
@@ -423,6 +423,7 @@ ldobj1(Biobuf *f, char *pkg, int64 len, char *pn)
        ntext = 0;
        eof = Boffset(f) + len;
        src[0] = 0;
+       pn = estrdup(pn); // we keep it in Sym* references
 
 newloop:
        memset(h, 0, sizeof(h));
index ad453064cc27a7fcfe078b6f1926d79882d859a3..14c6b6aa97d2aeb59288cf41a1074cea8a93c61e 100644 (file)
@@ -444,7 +444,7 @@ ldobj1(Biobuf *f, char *pkg, int64 len, char *pn)
        ntext = 0;
        eof = Boffset(f) + len;
        src[0] = 0;
-
+       pn = estrdup(pn); // we keep it in Sym* references
 
 newloop:
        memset(h, 0, sizeof(h));