You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sz...@apache.org on 2009/06/26 01:40:05 UTC

svn commit: r788549 - in /hadoop/hdfs/trunk: CHANGES.txt src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java

Author: szetszwo
Date: Thu Jun 25 23:40:05 2009
New Revision: 788549

URL: http://svn.apache.org/viewvc?rev=788549&view=rev
Log:
HDFS-181. Validate src path in FSNamesystem.getFileInfo(..).  Contributed by Todd Lipcon

Modified:
    hadoop/hdfs/trunk/CHANGES.txt
    hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
    hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java

Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=788549&r1=788548&r2=788549&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Thu Jun 25 23:40:05 2009
@@ -35,6 +35,9 @@
     HDFS-195. Handle expired tokens when write pipeline is restablished.
     (Kan Zhang via rangadi)
 
+    HDFS-181. Validate src path in FSNamesystem.getFileInfo(..).  (Todd
+    Lipcon via szetszwo)
+
 Release 0.20.1 - Unreleased
 
   IMPROVEMENTS

Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=788549&r1=788548&r2=788549&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Thu Jun 25 23:40:05 2009
@@ -1442,6 +1442,9 @@
    *         or null if file not found
    */
   FileStatus getFileInfo(String src) throws IOException {
+    if (!DFSUtil.isValidName(src)) {
+      throw new IOException("Invalid file name: " + src);
+    }
     if (isPermissionEnabled) {
       checkTraverse(src);
     }

Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java?rev=788549&r1=788548&r2=788549&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestFileStatus.java Thu Jun 25 23:40:05 2009
@@ -26,6 +26,7 @@
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.FSDataOutputStream;
+import org.apache.hadoop.ipc.RemoteException;
 
 /**
  * This class tests the FileStatus API.
@@ -79,6 +80,15 @@
       FileStatus fileInfo = dfsClient.getFileInfo("/noSuchFile");
       assertTrue(fileInfo == null);
 
+      // make sure getFileInfo throws the appropriate exception for non-relative
+      // filenames
+      try {
+        FileStatus foo = dfsClient.getFileInfo("non-relative");
+        fail("getFileInfo for a non-relative path did not thro IOException");
+      } catch (RemoteException re) {
+        assertTrue(re.toString().contains("Invalid file name"));
+      }
+
       // create a file in home directory
       //
       Path file1 = new Path("filestatus.dat");