1
0
mirror of https://github.com/golang/go synced 2024-11-22 02:44:39 -07:00

gc: make sure path names are canonical

R=ken2
CC=golang-dev
https://golang.org/cl/2209042
This commit is contained in:
Russ Cox 2010-09-16 15:37:57 -04:00
parent fcb24e8c62
commit 555f5b6b24

View File

@ -353,8 +353,11 @@ static int
findpkg(Strlit *name)
{
Idir *p;
char *q;
if(islocalname(name)) {
if(debug['u'])
return 0;
// try .a before .6. important for building libraries:
// if there is an array.6 in the array.a library,
// want to find all of array.a, not just array.6.
@ -367,6 +370,18 @@ findpkg(Strlit *name)
return 0;
}
// local imports should be canonicalized already.
// don't want to see "container/../container/vector"
// as different from "container/vector".
q = mal(name->len+1);
memmove(q, name->s, name->len);
q[name->len] = '\0';
cleanname(q);
if(strlen(q) != name->len || memcmp(q, name->s, name->len) != 0) {
yyerror("non-canonical import name %Z (%s)", name->s, q);
return 0;
}
for(p = idirs; p != nil; p = p->link) {
snprint(namebuf, sizeof(namebuf), "%s/%Z.a", p->dir, name);
if(access(namebuf, 0) >= 0)