Make the logic a lot clearer and fix the comment to match.
[ira/wip.git] / source3 / smbd / files.c
index bf216050b8c4d62aa9e9d431ebf6b30550454347..f7509d75fde0c35bb3dd4721cfeb52671566930c 100644 (file)
@@ -429,24 +429,19 @@ bool file_find_subpath(files_struct *dir_fsp)
                                        fsp->conn->connectpath,
                                        fsp->fsp_name->base_name);
 
-               if (strnequal(d_fullname, d1_fullname, dlen)) {
-                       /*
-                        * If the open file is a second file handle to the
-                        * same name or is a stream on the original file, then
-                        * don't return true.
-                        */
-                       if (d1_fullname[dlen] != '/') {
-                               TALLOC_FREE(d1_fullname);
-                               continue;
-                       }
-
+               /*
+                * If the open file has a path that is a longer
+                * component, then it's a subpath.
+                */
+               if (strnequal(d_fullname, d1_fullname, dlen) &&
+                               (d1_fullname[dlen] == '/')) {
                        TALLOC_FREE(d1_fullname);
-                       ret = true;
-                       goto out;
+                       TALLOC_FREE(d_fullname);
+                       return true;
                }
                TALLOC_FREE(d1_fullname);
-       } 
- out:
+       }
+
        TALLOC_FREE(d_fullname);
        return ret;
 }