]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Avoid recursing into . and .. when in -r mode
authorSimon Tatham <anakin@pobox.com>
Tue, 30 Nov 1999 11:53:42 +0000 (11:53 +0000)
committerSimon Tatham <anakin@pobox.com>
Tue, 30 Nov 1999 11:53:42 +0000 (11:53 +0000)
[originally from svn r332]

scp.c

diff --git a/scp.c b/scp.c
index 299f6fd07092f14f904429fe81be0244e8479de3..ac232fa5ae376f3c6c52c5b7808f469222b750c7 100644 (file)
--- 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;
     }