/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ package codetoanalyze.java.bufferoverrun; import java.util.ArrayList; class Array { private ArrayList a = new ArrayList<>(); void collection_add_zero_Good() { a.add(0, 100); } ArrayList collection_remove_from_empty_Bad() { ArrayList b = new ArrayList<>(); b.remove(0); return b; } void null_pruning1_Good() { if (a == null) { if (a != null) { int[] arr = {1, 2, 3, 4, 5}; arr[10] = 1; } } } void null_pruning1_Bad() { if (a == null) { if (a == null) { int[] arr = {1, 2, 3, 4, 5}; arr[10] = 1; } } } void null_pruning2_Good_FP() { if (a != null) { if (a == null) { int[] arr = {1, 2, 3, 4, 5}; arr[10] = 1; } } } void null_pruning2_Bad() { if (a != null) { if (a != null) { int[] arr = {1, 2, 3, 4, 5}; arr[10] = 1; } } } void negative_alloc_Bad() { a = new ArrayList<>(-1); } void zero_alloc_Good() { a = new ArrayList<>(0); } void positive_alloc_Good() { a = new ArrayList<>(10); } void iterate_collection_Good(ArrayList a) { if (a.size() > 10) { int x = a.get(9); } } void call_iterate_collection_Good() { ArrayList x = new ArrayList(); x.add(0); x.add(0); x.add(0); x.add(0); x.add(0); this.iterate_collection_Good(x); } void iterate_collection_Bad(ArrayList a) { if (a.size() >= 5) { int x = a.get(5); } } void call_iterate_collection_Bad() { ArrayList x = new ArrayList(); x.add(0); x.add(0); x.add(0); x.add(0); x.add(0); this.iterate_collection_Bad(x); } boolean b; int zero_to_five() { return b ? 0 : 5; } void prune_assign_exp_Good() { int idx; int[] arr = new int[5]; if ((idx = zero_to_five()) != 5) { arr[idx] = 0; } } void prune_assign_exp_Bad() { int idx; int[] arr = new int[3]; if ((idx = zero_to_five()) != 5) { arr[idx] = 0; } } enum MyEnum { MyEnumA }; void array_length_Bad() { int[] arr = new int[5]; if (MyEnum.values().length == 0) { arr[10] = 0; } else { arr[10] = 0; } } }