]> Cypherpunks repositories - gostls13.git/commitdiff
8l: fix ldpe sym name length == 8 strdup incorrect.
authorWei Guangjing <vcc.163@gmail.com>
Thu, 27 Jan 2011 13:26:28 +0000 (08:26 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 27 Jan 2011 13:26:28 +0000 (08:26 -0500)
R=rsc
CC=golang-dev
https://golang.org/cl/4102043

src/cmd/ld/ldpe.c

index 66b122bb339520f8894df5d0f2f73f8f1b5fca4c..d8b0a6fc2373b1e26bb20f663a0e4a909e3eadb7 100644 (file)
@@ -170,8 +170,10 @@ ldpe(Biobuf *f, char *pkg, int64 len, char *pn)
                         (symbuf[2] == 0) && (symbuf[3] == 0)) {
                        l = le32(&symbuf[4]);
                        obj->pesym[i].name = (char*)&obj->snames[l];
-               } else {
-                       obj->pesym[i].name = strdup((char*)symbuf);
+               } else { // sym name length <= 8
+                       obj->pesym[i].name = mal(9);
+                       strncpy(obj->pesym[i].name, (char*)symbuf, 8);
+                       obj->pesym[i].name[8] = 0;
                }
                obj->pesym[i].value = le32(&symbuf[8]);
                obj->pesym[i].sectnum = le16(&symbuf[12]);