You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sz...@apache.org on 2011/10/21 02:32:42 UTC
svn commit: r1187144 - in /hadoop/common/branches/branch-0.20-security-205:
./ src/hdfs/org/apache/hadoop/hdfs/ src/hdfs/org/apache/hadoop/hdfs/protocol/
src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/
src/hdfs/org/apache/hadoop/hdfs/web...
Author: szetszwo
Date: Fri Oct 21 00:32:41 2011
New Revision: 1187144
URL: http://svn.apache.org/viewvc?rev=1187144&view=rev
Log:
svn merge -c 1187141 from branch-0.20-security for HDFS-2427.
Added:
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/DestinationParam.java
- copied unchanged from r1187141, hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/web/resources/DestinationParam.java
hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/resources/
- copied from r1187141, hadoop/common/branches/branch-0.20-security/src/test/org/apache/hadoop/hdfs/web/resources/
hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/resources/TestParam.java
- copied unchanged from r1187141, hadoop/common/branches/branch-0.20-security/src/test/org/apache/hadoop/hdfs/web/resources/TestParam.java
Removed:
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/DstPathParam.java
Modified:
hadoop/common/branches/branch-0.20-security-205/ (props changed)
hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (contents, props changed)
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSConfigKeys.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/AccessTimeParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BlockSizeParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BufferSizeParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/IntegerParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LengthParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LongParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ModificationTimeParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/OffsetParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/PermissionParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ReplicationParam.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ShortParam.java
Propchange: hadoop/common/branches/branch-0.20-security-205/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 00:32:41 2011
@@ -1,6 +1,6 @@
/hadoop/common/branches/branch-0.20:826138,826568,829987,831184,833001,880632,898713,909245,909723,960946,990003,1044225
/hadoop/common/branches/branch-0.20-append:955380,955398,955448,956329
-/hadoop/common/branches/branch-0.20-security:1170042,1170087,1170997,1171137,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1174471,1175114,1176179,1176720,1177907,1179036,1179171,1179519,1179857,1183086,1183101,1183176,1183556,1186509
+/hadoop/common/branches/branch-0.20-security:1170042,1170087,1170997,1171137,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1174471,1175114,1176179,1176720,1177907,1179036,1179171,1179519,1179857,1183086,1183101,1183176,1183556,1186509,1187141
/hadoop/common/branches/branch-0.20-security-203:1096071,1097011,1097249,1097269,1097281,1097966,1098816,1098819,1098823,1098827,1098832,1098839,1098854,1098863,1099088,1099191,1099324,1099330,1099333,1102071,1128115
/hadoop/common/branches/branch-0.20-security-204:1128390,1147228,1148069,1149316,1154413
/hadoop/core/branches/branch-0.19:713112
Modified: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/CHANGES.txt?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.20-security-205/CHANGES.txt Fri Oct 21 00:32:41 2011
@@ -2,6 +2,11 @@ Hadoop Change Log
Release 0.20.205.1 - unreleased
+ IMPROVEMENTS
+
+ HDFS-2427. Change the default permission in webhdfs to 755 and add range
+ check/validation for all parameters. (szetszwo)
+
BUG FIXES
HDFS-2441. Remove the Content-Type set by HttpServer.QuotingInputFilter in
Propchange: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 21 00:32:41 2011
@@ -1,6 +1,6 @@
/hadoop/common/branches/branch-0.20/CHANGES.txt:826138,826568,829987,831184,833001,880632,898713,909245,909723,960946,990003,1044225
/hadoop/common/branches/branch-0.20-append/CHANGES.txt:955380,955398,955448,956329
-/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713,1179722,1179857,1179919,1183086,1183101,1183176,1183556,1186509
+/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713,1179722,1179857,1179919,1183086,1183101,1183176,1183556,1186509,1187141
/hadoop/common/branches/branch-0.20-security-203/CHANGES.txt:1096071,1097011,1097249,1097269,1097281,1097966,1098816,1098819,1098823,1098827,1098832,1098839,1098854,1098863,1099088,1099191,1099324,1099330,1099333,1102071,1128115
/hadoop/common/branches/branch-0.20-security-204/CHANGES.txt:1128390,1147228,1148069,1149316,1154413,1159730,1161741
/hadoop/core/branches/branch-0.18/CHANGES.txt:727226
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSConfigKeys.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSConfigKeys.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSConfigKeys.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/DFSConfigKeys.java Fri Oct 21 00:32:41 2011
@@ -28,7 +28,7 @@ import org.apache.hadoop.fs.CommonConfig
public class DFSConfigKeys extends CommonConfigurationKeys {
- public static final String DFS_BLOCK_SIZE_KEY = "dfs.blocksize";
+ public static final String DFS_BLOCK_SIZE_KEY = "dfs.block.size";
public static final long DFS_BLOCK_SIZE_DEFAULT = 64*1024*1024;
public static final String DFS_REPLICATION_KEY = "dfs.replication";
public static final short DFS_REPLICATION_DEFAULT = 3;
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java Fri Oct 21 00:32:41 2011
@@ -18,6 +18,7 @@
package org.apache.hadoop.hdfs.protocol;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hdfs.DFSConfigKeys;
/************************************
* Some handy constants
@@ -49,7 +50,7 @@ public interface FSConstants {
//Used for writing header etc.
public static final int SMALL_BUFFER_SIZE = Math.min(BUFFER_SIZE/2, 512);
//TODO mb@media-style.com: should be conf injected?
- public static final long DEFAULT_BLOCK_SIZE = 64 * 1024 * 1024;
+ public static final long DEFAULT_BLOCK_SIZE = DFSConfigKeys.DFS_BLOCK_SIZE_DEFAULT;
public static final int DEFAULT_DATA_SOCKET_SIZE = 128 * 1024;
public static final int SIZE_OF_INTEGER = Integer.SIZE / Byte.SIZE;
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java Fri Oct 21 00:32:41 2011
@@ -63,7 +63,7 @@ import org.apache.hadoop.hdfs.web.resour
import org.apache.hadoop.hdfs.web.resources.BufferSizeParam;
import org.apache.hadoop.hdfs.web.resources.DelegationParam;
import org.apache.hadoop.hdfs.web.resources.DeleteOpParam;
-import org.apache.hadoop.hdfs.web.resources.DstPathParam;
+import org.apache.hadoop.hdfs.web.resources.DestinationParam;
import org.apache.hadoop.hdfs.web.resources.GetOpParam;
import org.apache.hadoop.hdfs.web.resources.GroupParam;
import org.apache.hadoop.hdfs.web.resources.HttpOpParam;
@@ -192,8 +192,8 @@ public class NamenodeWebHdfsMethods {
@PathParam(UriFsPathParam.NAME) final UriFsPathParam path,
@QueryParam(PutOpParam.NAME) @DefaultValue(PutOpParam.DEFAULT)
final PutOpParam op,
- @QueryParam(DstPathParam.NAME) @DefaultValue(DstPathParam.DEFAULT)
- final DstPathParam dstPath,
+ @QueryParam(DestinationParam.NAME) @DefaultValue(DestinationParam.DEFAULT)
+ final DestinationParam destination,
@QueryParam(OwnerParam.NAME) @DefaultValue(OwnerParam.DEFAULT)
final OwnerParam owner,
@QueryParam(GroupParam.NAME) @DefaultValue(GroupParam.DEFAULT)
@@ -216,7 +216,7 @@ public class NamenodeWebHdfsMethods {
if (LOG.isTraceEnabled()) {
LOG.trace(op + ": " + path + ", ugi=" + ugi
- + Param.toSortedString(", ", dstPath, owner, group, permission,
+ + Param.toSortedString(", ", destination, owner, group, permission,
overwrite, bufferSize, replication, blockSize,
modificationTime, accessTime));
}
@@ -250,7 +250,7 @@ public class NamenodeWebHdfsMethods {
}
case RENAME:
{
- final boolean b = namenode.rename(fullpath, dstPath.getValue());
+ final boolean b = namenode.rename(fullpath, destination.getValue());
final String js = JsonUtil.toJsonString("boolean", b);
return Response.ok(js).type(MediaType.APPLICATION_JSON).build();
}
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java Fri Oct 21 00:32:41 2011
@@ -59,7 +59,7 @@ import org.apache.hadoop.hdfs.web.resour
import org.apache.hadoop.hdfs.web.resources.BlockSizeParam;
import org.apache.hadoop.hdfs.web.resources.BufferSizeParam;
import org.apache.hadoop.hdfs.web.resources.DeleteOpParam;
-import org.apache.hadoop.hdfs.web.resources.DstPathParam;
+import org.apache.hadoop.hdfs.web.resources.DestinationParam;
import org.apache.hadoop.hdfs.web.resources.GetOpParam;
import org.apache.hadoop.hdfs.web.resources.GroupParam;
import org.apache.hadoop.hdfs.web.resources.HttpOpParam;
@@ -375,7 +375,7 @@ public class WebHdfsFileSystem extends F
statistics.incrementWriteOps(1);
final HttpOpParam.Op op = PutOpParam.Op.RENAME;
final Map<String, Object> json = run(op, src,
- new DstPathParam(makeQualified(dst).toUri().getPath()));
+ new DestinationParam(makeQualified(dst).toUri().getPath()));
return (Boolean)json.get("boolean");
}
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/AccessTimeParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/AccessTimeParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/AccessTimeParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/AccessTimeParam.java Fri Oct 21 00:32:41 2011
@@ -31,7 +31,7 @@ public class AccessTimeParam extends Lon
* @param value the parameter value.
*/
public AccessTimeParam(final Long value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, -1L, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BlockSizeParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BlockSizeParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BlockSizeParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BlockSizeParam.java Fri Oct 21 00:32:41 2011
@@ -17,8 +17,10 @@
*/
package org.apache.hadoop.hdfs.web.resources;
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_BLOCK_SIZE_DEFAULT;
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_BLOCK_SIZE_KEY;
+
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.protocol.FSConstants;
/** Block size parameter. */
public class BlockSizeParam extends LongParam {
@@ -34,7 +36,7 @@ public class BlockSizeParam extends Long
* @param value the parameter value.
*/
public BlockSizeParam(final Long value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, 1L, null);
}
/**
@@ -53,6 +55,6 @@ public class BlockSizeParam extends Long
/** @return the value or, if it is null, return the default from conf. */
public long getValue(final Configuration conf) {
return getValue() != null? getValue()
- : conf.getLong("dfs.block.size", FSConstants.DEFAULT_BLOCK_SIZE);
+ : conf.getLong(DFS_BLOCK_SIZE_KEY, DFS_BLOCK_SIZE_DEFAULT);
}
}
\ No newline at end of file
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BufferSizeParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BufferSizeParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BufferSizeParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/BufferSizeParam.java Fri Oct 21 00:32:41 2011
@@ -33,7 +33,7 @@ public class BufferSizeParam extends Int
* @param value the parameter value.
*/
public BufferSizeParam(final Integer value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, 1, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/IntegerParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/IntegerParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/IntegerParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/IntegerParam.java Fri Oct 21 00:32:41 2011
@@ -19,8 +19,24 @@ package org.apache.hadoop.hdfs.web.resou
/** Integer parameter. */
abstract class IntegerParam extends Param<Integer, IntegerParam.Domain> {
- IntegerParam(final Domain domain, final Integer value) {
+ IntegerParam(final Domain domain, final Integer value,
+ final Integer min, final Integer max) {
super(domain, value);
+ checkRange(min, max);
+ }
+
+ private void checkRange(final Integer min, final Integer max) {
+ if (value == null) {
+ return;
+ }
+ if (min != null && value < min) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " < " + domain.toString(min));
+ }
+ if (max != null && value > max) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " > " + domain.toString(max));
+ }
}
@Override
@@ -49,7 +65,12 @@ abstract class IntegerParam extends Para
@Override
Integer parse(final String str) {
- return NULL.equals(str)? null: Integer.parseInt(str, radix);
+ try{
+ return NULL.equals(str)? null: Integer.parseInt(str, radix);
+ } catch(NumberFormatException e) {
+ throw new IllegalArgumentException("Failed to parse \"" + str
+ + "\" as a radix-" + radix + " integer.", e);
+ }
}
/** Convert an Integer to a String. */
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LengthParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LengthParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LengthParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LengthParam.java Fri Oct 21 00:32:41 2011
@@ -31,7 +31,7 @@ public class LengthParam extends LongPar
* @param value the parameter value.
*/
public LengthParam(final Long value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, 0L, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LongParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LongParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LongParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/LongParam.java Fri Oct 21 00:32:41 2011
@@ -19,8 +19,23 @@ package org.apache.hadoop.hdfs.web.resou
/** Long parameter. */
abstract class LongParam extends Param<Long, LongParam.Domain> {
- LongParam(final Domain domain, final Long value) {
+ LongParam(final Domain domain, final Long value, final Long min, final Long max) {
super(domain, value);
+ checkRange(min, max);
+ }
+
+ private void checkRange(final Long min, final Long max) {
+ if (value == null) {
+ return;
+ }
+ if (min != null && value < min) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " < " + domain.toString(min));
+ }
+ if (max != null && value > max) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " > " + domain.toString(max));
+ }
}
@Override
@@ -49,7 +64,12 @@ abstract class LongParam extends Param<L
@Override
Long parse(final String str) {
- return NULL.equals(str)? null: Long.parseLong(str, radix);
+ try {
+ return NULL.equals(str)? null: Long.parseLong(str, radix);
+ } catch(NumberFormatException e) {
+ throw new IllegalArgumentException("Failed to parse \"" + str
+ + "\" as a radix-" + radix + " long integer.", e);
+ }
}
/** Convert a Short to a String. */
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ModificationTimeParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ModificationTimeParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ModificationTimeParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ModificationTimeParam.java Fri Oct 21 00:32:41 2011
@@ -31,7 +31,7 @@ public class ModificationTimeParam exten
* @param value the parameter value.
*/
public ModificationTimeParam(final Long value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, -1L, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/OffsetParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/OffsetParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/OffsetParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/OffsetParam.java Fri Oct 21 00:32:41 2011
@@ -31,7 +31,7 @@ public class OffsetParam extends LongPar
* @param value the parameter value.
*/
public OffsetParam(final Long value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, 0L, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/PermissionParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/PermissionParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/PermissionParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/PermissionParam.java Fri Oct 21 00:32:41 2011
@@ -27,13 +27,15 @@ public class PermissionParam extends Sho
public static final String DEFAULT = NULL;
private static final Domain DOMAIN = new Domain(NAME, 8);
+
+ private static final short DEFAULT_PERMISSION = 0755;
/**
* Constructor.
* @param value the parameter value.
*/
public PermissionParam(final FsPermission value) {
- super(DOMAIN, value == null? null: value.toShort());
+ super(DOMAIN, value == null? null: value.toShort(), null, null);
}
/**
@@ -41,7 +43,7 @@ public class PermissionParam extends Sho
* @param str a string representation of the parameter value.
*/
public PermissionParam(final String str) {
- super(DOMAIN, DOMAIN.parse(str));
+ super(DOMAIN, DOMAIN.parse(str), (short)0, (short)0777);
}
@Override
@@ -51,7 +53,7 @@ public class PermissionParam extends Sho
/** @return the represented FsPermission. */
public FsPermission getFsPermission() {
- final Short mode = getValue();
- return mode == null? FsPermission.getDefault(): new FsPermission(mode);
+ final Short v = getValue();
+ return new FsPermission(v != null? v: DEFAULT_PERMISSION);
}
}
\ No newline at end of file
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ReplicationParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ReplicationParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ReplicationParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ReplicationParam.java Fri Oct 21 00:32:41 2011
@@ -36,7 +36,7 @@ public class ReplicationParam extends Sh
* @param value the parameter value.
*/
public ReplicationParam(final Short value) {
- super(DOMAIN, value);
+ super(DOMAIN, value, (short)1, null);
}
/**
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ShortParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ShortParam.java?rev=1187144&r1=1187143&r2=1187144&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ShortParam.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/resources/ShortParam.java Fri Oct 21 00:32:41 2011
@@ -19,8 +19,24 @@ package org.apache.hadoop.hdfs.web.resou
/** Short parameter. */
abstract class ShortParam extends Param<Short, ShortParam.Domain> {
- ShortParam(final Domain domain, final Short value) {
+ ShortParam(final Domain domain, final Short value,
+ final Short min, final Short max) {
super(domain, value);
+ checkRange(min, max);
+ }
+
+ private void checkRange(final Short min, final Short max) {
+ if (value == null) {
+ return;
+ }
+ if (min != null && value < min) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " < " + domain.toString(min));
+ }
+ if (max != null && value > max) {
+ throw new IllegalArgumentException("Invalid parameter range: " + getName()
+ + " = " + domain.toString(value) + " > " + domain.toString(max));
+ }
}
@Override
@@ -49,7 +65,12 @@ abstract class ShortParam extends Param<
@Override
Short parse(final String str) {
- return NULL.equals(str)? null: Short.parseShort(str, radix);
+ try {
+ return NULL.equals(str)? null: Short.parseShort(str, radix);
+ } catch(NumberFormatException e) {
+ throw new IllegalArgumentException("Failed to parse \"" + str
+ + "\" as a radix-" + radix + " short integer.", e);
+ }
}
/** Convert a Short to a String. */