+++ /dev/null
-Fixed unexpected removal of a directory if it is moved into itself: return
-EINVAL in this situation. It also happens when trying to change directory name
-case.
-Picked from upstream svn r337.
-Index: fuse-exfat/libexfat/node.c
-===================================================================
---- fuse-exfat.orig/libexfat/node.c 2013-01-25 22:12:09.529117673 +0100
-+++ fuse-exfat/libexfat/node.c 2013-01-25 22:22:56.473094067 +0100
-@@ -905,6 +905,23 @@
- exfat_put_node(ef, node);
- return rc;
- }
-+
-+ /* check that target is not a subdirectory of the source */
-+ if (node->flags & EXFAT_ATTRIB_DIR)
-+ {
-+ struct exfat_node* p;
-+
-+ for (p = dir; p; p = p->parent)
-+ if (node == p)
-+ {
-+ if (existing != NULL)
-+ exfat_put_node(ef, existing);
-+ exfat_put_node(ef, dir);
-+ exfat_put_node(ef, node);
-+ return -EINVAL;
-+ }
-+ }
-+
- if (existing != NULL)
- {
- /* remove target if it's not the same node as source */