aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-07-25 10:16:52 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-25 10:18:11 -0700
commit61f477e8193b83864824f30b06b9e1576d06f4d5 (patch)
tree5d218fdd138fda70eb2248590980f0232654cd7f /src/main/java/com/google/devtools/build/lib/actions
parent80b4b95175ffda4d4ec11366e5a606c010509792 (diff)
Use the single-string arg formatter for param file format.
This avoids bazel crashes for illegally formatted strings. Previously the code would assume that a correct string was passed with only minimal validation. RELNOTES: None PiperOrigin-RevId: 206012819
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/CommandLines.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SingleStringArgFormatter.java (renamed from src/main/java/com/google/devtools/build/lib/actions/CommandLineItemSimpleFormatter.java)2
2 files changed, 3 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandLines.java b/src/main/java/com/google/devtools/build/lib/actions/CommandLines.java
index 2e29fab1a4..26d0eb9775 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandLines.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/CommandLines.java
@@ -164,9 +164,8 @@ public class CommandLines {
++paramFileNameSuffix;
String paramArg =
- paramFileInfo
- .getFlagFormatString()
- .replaceFirst("%s", paramFileExecPath.getPathString());
+ SingleStringArgFormatter.format(
+ paramFileInfo.getFlagFormatString(), paramFileExecPath.getPathString());
arguments.addElement(paramArg);
cmdLineLength += paramArg.length() + 1;
paramFiles.add(
diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandLineItemSimpleFormatter.java b/src/main/java/com/google/devtools/build/lib/actions/SingleStringArgFormatter.java
index 462fe8278c..b4b3d028d0 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandLineItemSimpleFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SingleStringArgFormatter.java
@@ -19,7 +19,7 @@ package com.google.devtools.build.lib.actions;
* <p>This implementation is used in command line item expansions that use formatting. We use a
* custom implementation to improve performance and avoid GC.
*/
-public class CommandLineItemSimpleFormatter {
+public class SingleStringArgFormatter {
/**
* Returns true if the format string contains a single '%s'.