X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=scp.c;h=ac232fa5ae376f3c6c52c5b7808f469222b750c7;hb=5176e1e9bbdc6620a115da0f92ca2282a6714721;hp=299f6fd07092f14f904429fe81be0244e8479de3;hpb=8446532e4ad4e8e68eb82bf86a36ba1f5a38d78f;p=PuTTY.git diff --git a/scp.c b/scp.c index 299f6fd0..ac232fa5 100644 --- a/scp.c +++ b/scp.c @@ -277,10 +277,25 @@ static void source(char *src) } if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { - if (recursive) - rsource(src); - else + if (recursive) { + /* + * Avoid . and .. directories. + */ + char *p; + p = strrchr(src, '/'); + if (!p) + p = strrchr(src, '\\'); + if (!p) + p = src; + else + p++; + if (!strcmp(p, ".") || !strcmp(p, "..")) + /* skip . and .. */; + else + rsource(src); + } else { run_err("%s: not a regular file", src); + } return; }