--- shadow-4.1.5.1/libmisc/copydir.c.rpmsave 2012-02-13 19:16:32.000000000 +0000 +++ shadow-4.1.5.1/libmisc/copydir.c 2012-07-12 12:35:57.027308382 +0100 @@ -236,6 +236,7 @@ bool set_orig = false; struct DIRECT *ent; DIR *dir; + int len = 0; if (copy_root) { struct stat sb; @@ -296,6 +297,18 @@ char *dst_name; size_t src_len = strlen (ent->d_name) + 2; size_t dst_len = strlen (ent->d_name) + 2; + + /* + * Skip the ".rpmsave", ".rpmnew" and ".rpmorig" entries + */ + + len = strlen (ent->d_name); + if (len > 8 && (strcmp ((ent->d_name+len-8) , ".rpmsave") == 0 || + strcmp ((ent->d_name+len-8), ".rpmorig") == 0)) + continue; + if (len > 7 && strcmp ((ent->d_name+len-7), ".rpmnew") == 0) + continue; + src_len += strlen (src_root); dst_len += strlen (dst_root);