added writable permissions check for directories
authorMichael Rash <mbr@cipherdyne.org>
Sun, 25 Apr 2010 18:35:30 +0000 (18:35 +0000)
committerMichael Rash <mbr@cipherdyne.org>
Sun, 25 Apr 2010 18:35:30 +0000 (18:35 +0000)
git-svn-id: file:///home/mbr/svn/gpgdir_repos/gpgdir/trunk@358 958e171a-1414-0410-8e2f-9d295d3c0db0

gpgdir

diff --git a/gpgdir b/gpgdir
index e627f59..7243da7 100755 (executable)
--- a/gpgdir
+++ b/gpgdir
@@ -33,6 +33,7 @@
 
 use File::Find;
 use File::Copy;
+use Fcntl qw/:mode/;
 use IO::File;
 use IO::Handle;
 use Getopt::Long;
@@ -1356,8 +1357,6 @@ sub check_file_criteria() {
 
     ### skip all links, zero size files, all hidden
     ### files (includes the .gnupg directory), etc.
-    return if -d $file;
-
     unless ($force_mode) {
         if ($file =~ m|/\.|) {
             print "[-] Skipping file: $file\n"
@@ -1366,6 +1365,15 @@ sub check_file_criteria() {
         }
     }
 
+    if (-d $file) {
+        ### skip all directories but only after we have verified
+        ### whether they are writable
+        unless ((stat($file))[2] & S_IWUSR) {
+            die "[*] Directory: '$file' is not writable by the current user.";
+        }
+        return;
+    }
+
     if (-e $file and not -l $file and -s $file != 0
             and $file !~ m|\.gpgdir\.pid| and $file !~ m|\.gnupg|) {
         if ($encrypt_mode or $signing_mode) {