From: Simon Tatham Date: Tue, 30 Nov 1999 11:53:42 +0000 (+0000) Subject: Avoid recursing into . and .. when in -r mode X-Git-Tag: 0.49~66 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=cc98ca9aea3f57d34853f5578bb1ce741a2b2828;p=PuTTY.git Avoid recursing into . and .. when in -r mode [originally from svn r332] --- 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; }