aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKousuke Saruta <sarutak@oss.nttdata.co.jp>2014-10-24 13:08:21 -0700
committerAndrew Or <andrew@databricks.com>2014-10-24 13:08:59 -0700
commit098f83c7ccd7dad9f9228596da69fe5f55711a52 (patch)
tree380cfd492302aa85b1c8da9aa7546fc5c4e09625
parent30ea2868e7afbec20bfc83818249b6d2d7dc6aec (diff)
downloadspark-098f83c7ccd7dad9f9228596da69fe5f55711a52.tar.gz
spark-098f83c7ccd7dad9f9228596da69fe5f55711a52.tar.bz2
spark-098f83c7ccd7dad9f9228596da69fe5f55711a52.zip
[SPARK-4075] [Deploy] Jar url validation is not enough for Jar file
In deploy.ClientArguments.isValidJarUrl, the url is checked as follows. def isValidJarUrl(s: String): Boolean = s.matches("(.+):(.+)jar") So, it allows like 'hdfs:file.jar' (no authority). Author: Kousuke Saruta <sarutak@oss.nttdata.co.jp> Closes #2925 from sarutak/uri-syntax-check-improvement and squashes the following commits: cf06173 [Kousuke Saruta] Improved URI syntax checking
-rw-r--r--core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala11
-rw-r--r--core/src/test/scala/org/apache/spark/deploy/ClientSuite.scala6
2 files changed, 16 insertions, 1 deletions
diff --git a/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala b/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala
index 39150deab8..4e802e02c4 100644
--- a/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala
@@ -17,6 +17,8 @@
package org.apache.spark.deploy
+import java.net.{URI, URISyntaxException}
+
import scala.collection.mutable.ListBuffer
import org.apache.log4j.Level
@@ -114,5 +116,12 @@ private[spark] class ClientArguments(args: Array[String]) {
}
object ClientArguments {
- def isValidJarUrl(s: String): Boolean = s.matches("(.+):(.+)jar")
+ def isValidJarUrl(s: String): Boolean = {
+ try {
+ val uri = new URI(s)
+ uri.getScheme != null && uri.getAuthority != null && s.endsWith("jar")
+ } catch {
+ case _: URISyntaxException => false
+ }
+ }
}
diff --git a/core/src/test/scala/org/apache/spark/deploy/ClientSuite.scala b/core/src/test/scala/org/apache/spark/deploy/ClientSuite.scala
index 4161aede1d..94a2bdd74e 100644
--- a/core/src/test/scala/org/apache/spark/deploy/ClientSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/ClientSuite.scala
@@ -29,6 +29,12 @@ class ClientSuite extends FunSuite with Matchers {
ClientArguments.isValidJarUrl("hdfs://someHost:1234/foo") should be (false)
ClientArguments.isValidJarUrl("/missing/a/protocol/jarfile.jar") should be (false)
ClientArguments.isValidJarUrl("not-even-a-path.jar") should be (false)
+
+ // No authority
+ ClientArguments.isValidJarUrl("hdfs:someHost:1234/jarfile.jar") should be (false)
+
+ // Invalid syntax
+ ClientArguments.isValidJarUrl("hdfs:") should be (false)
}
}