aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2015-09-01 17:31:18 +0000
committerGravatar John Field <jfield@google.com>2015-09-02 00:58:26 +0000
commitc7036917be1e544f24189ab30a293509ebbdeb1b (patch)
tree4a0d4d8c9a623e9f1d4b412d5557f8f8ab1b7e68 /src/main/java/com
parent1a372a5a0174806bdb2e0a9ba1dfda9766b32ccb (diff)
Fix crash on deserializing INTEGER_LIST attributes in packages.
Currently, this can only happen if a Skylark rules declare use of such an INTEGER_LIST. -- MOS_MIGRATED_REVID=102054727
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java b/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java
index 95a928fb57..ad335aaa25 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageDeserializer.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.packages;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
import com.google.common.cache.CacheBuilder;
@@ -532,7 +533,8 @@ public class PackageDeserializer {
}
// TODO(bazel-team): Verify that these put sane values in the attribute
- private static Object deserializeAttributeValue(Type<?> expectedType,
+ @VisibleForTesting
+ static Object deserializeAttributeValue(Type<?> expectedType,
Build.Attribute attrPb)
throws PackageDeserializationException {
switch (attrPb.getType()) {
@@ -638,6 +640,9 @@ public class PackageDeserializer {
case TRISTATE:
return attrPb.hasStringValue() ? deserializeTriStateValue(attrPb.getStringValue()) : null;
+ case INTEGER_LIST:
+ return ImmutableList.copyOf(attrPb.getIntListValueList());
+
default:
throw new PackageDeserializationException("Invalid discriminator: " + attrPb.getType());
}