Browse Source

HADOOP-7325. The hadoop command should not accept class names starting with a hyphen. Contributed by Brock Noland.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.22@1132768 13f79535-47bb-0310-9956-ffa450edef68
Todd Lipcon 14 years ago
parent
commit
0c48b9afe4
2 changed files with 7 additions and 0 deletions
  1. 3 0
      CHANGES.txt
  2. 4 0
      bin/hadoop

+ 3 - 0
CHANGES.txt

@@ -257,6 +257,9 @@ Release 0.22.0 - Unreleased
     HADOOP-7335. Force entropy to come from non-true random for tests.
     HADOOP-7335. Force entropy to come from non-true random for tests.
     (todd via eli)
     (todd via eli)
 
 
+    HADOOP-7325. The hadoop command should not accept class names starting with
+    a hyphen. (Brock Noland via todd)
+
   OPTIMIZATIONS
   OPTIMIZATIONS
 
 
     HADOOP-6884. Add LOG.isDebugEnabled() guard for each LOG.debug(..).
     HADOOP-6884. Add LOG.isDebugEnabled() guard for each LOG.debug(..).

+ 4 - 0
bin/hadoop

@@ -108,6 +108,10 @@ case $COMMAND in
       CLASS=org.apache.hadoop.tools.HadoopArchives
       CLASS=org.apache.hadoop.tools.HadoopArchives
       CLASSPATH=${CLASSPATH}:${TOOL_PATH}
       CLASSPATH=${CLASSPATH}:${TOOL_PATH}
       HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
       HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
+    elif [[ "$COMMAND" = -*  ]] ; then
+        # class and package names cannot begin with a -
+        echo "Error: No command named \`$COMMAND' was found. Perhaps you meant \`hadoop ${COMMAND#-}'"
+        exit 1
     else
     else
       CLASS=$COMMAND
       CLASS=$COMMAND
     fi
     fi