From cc98ca9aea3f57d34853f5578bb1ce741a2b2828 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 30 Nov 1999 11:53:42 +0000 Subject: [PATCH] Avoid recursing into . and .. when in -r mode [originally from svn r332] --- scp.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) 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; }