From 8bbb6d3ed04ed0d79438045bb8d56b8c03a42944 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 14 Mar 2013 14:35:47 -0400 Subject: [PATCH] cmd/ld: another use-after-free 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 | 1 + src/cmd/6l/obj.c | 1 + src/cmd/8l/obj.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c index d25fefebba..f70cb6c336 100644 --- a/src/cmd/5l/obj.c +++ b/src/cmd/5l/obj.c @@ -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)); diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c index 6ea88de273..91569794bf 100644 --- a/src/cmd/6l/obj.c +++ b/src/cmd/6l/obj.c @@ -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)); diff --git a/src/cmd/8l/obj.c b/src/cmd/8l/obj.c index ad453064cc..14c6b6aa97 100644 --- a/src/cmd/8l/obj.c +++ b/src/cmd/8l/obj.c @@ -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)); -- 2.48.1