Do not blindly assume that a .gclient file in a parent directory belongs to the current directory.

BUG=54238
TEST=GClientSmoke.testWrongConfig

Review URL: http://codereview.chromium.org/3300007

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@58371 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index 5ca7036..3cabc14 100644
--- a/gclient.py
+++ b/gclient.py
@@ -621,13 +621,24 @@
   def LoadCurrentConfig(options):
     """Searches for and loads a .gclient file relative to the current working
     dir. Returns a GClient object."""
-    path = gclient_utils.FindGclientRoot(os.getcwd(), options.config_filename)
+    cwd = os.getcwd()
+    path = gclient_utils.FindGclientRoot(cwd, options.config_filename)
     if not path:
       return None
     client = GClient(path, options)
     client.SetConfig(gclient_utils.FileRead(
         os.path.join(path, options.config_filename)))
-    return client
+    if path == cwd:
+      return client
+    # Validate the current directory we are in belongs to the .gclient file we
+    # found.
+    cwd = cwd[len(path)+1:]
+    all_solutions = [d.name for d in client.tree(False)]
+    while len(cwd):
+      if cwd in all_solutions:
+        return client
+      cwd = os.path.dirname(cwd)
+    return None
 
   def SetDefaultConfig(self, solution_name, solution_url, safesync_url):
     self.SetConfig(self.DEFAULT_CLIENT_FILE_TEXT % {