X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/b8c98f3cf636db3b80ff2c4908f7590e37bcd3da..7f1f80deed773457b474c04e6dd41a890ab4284a:/scp.c 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; }