Update smallvec to 1.13.2

Test: m
Change-Id: I8a5458f0da36605b8ba3cc188a7739b03b05bb10
diff --git a/crates/smallvec/.android-checksum.json b/crates/smallvec/.android-checksum.json
index 248183f..396cf5d 100644
--- a/crates/smallvec/.android-checksum.json
+++ b/crates/smallvec/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{"scripts/run_miri.sh":"d2e9617474d74e6ac5a849148366e8ca980f42ffca842986d7e09f3d0f84a755","tests/macro.rs":"6dc873dfc1d8cb3175cb8865cb86e9e51eca979d40ae0c6aa47ea2080751c422","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","METADATA":"34e75997571383e69174f25f14d021e888b0311ad66f4dd14edcf9773526577d","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","debug_metadata/README.md":"418c67b73cea98f2ecb4ed6e196b39fe126955c59118d5f090dbca83a9985abf",".cargo-checksum.json":"9bcd4e000642ce9a76b78326699ccaa7e7fccd41474a40a3b652fcab888131ff","benches/bench.rs":"f251efa86860f98aa4f9423fbc03caf56ed0b3d09835da9e41cc206c74535dfe","Cargo.toml":"2c0edb2bacc3ffcad8fa294772ed4c633ba4e16b7a9ab309cb2278c5697c11e7","Android.bp":"8247868e80d8ef08095489502e311c96a54ffde242705fc0bfd48e02fa772f9f","src/tests.rs":"88c327697b645c24cbbafe7daf0441f434645bc87ef77a803bed1e2f550789d5","TEST_MAPPING":"5a419c7163155a91e02d7a9286f347e2ab6ce5a379de68e54f10b217566f988e","cargo_embargo.json":"88d25cd0fee248d4f4bcfa4300c5cd0914f1e7a046a3d0b9e2438c18fe5e42ff","LICENSE-MIT":"fe6a4e93451059cce8c1c9ddbe92a0fa82ab3e0e5b0a0f001909d45f40dc2a1b","src/specialization.rs":"c6a067616626342b26504ac87dacd4320de1f2d6a692795412750b3c52c23f21","src/arbitrary.rs":"e02f84c3297fe05f999bd8cc2283b0130cc3161bd950f1aaca29a10b961da3c2","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","src/lib.rs":"c3d93ab43d8bf31082b99a06bf328c7507f2327f4be9d8c97bfab1d1a2376994","README.md":"b61db92707b86734601ab3bfaf036f14f1d2520b54d1494a5cbfb47d0facd3ff","debug_metadata/smallvec.natvis":"479c9285eeb589637c56a36214ebae471d7261528dfa48d231b6d69245b93532","tests/debugger_visualizer.rs":"3b584ac2297d01e10e06e3162112657f8e615c08c8b02f1f66255c676ae25264"}}
\ No newline at end of file
+{"package":null,"files":{"MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","debug_metadata/README.md":"418c67b73cea98f2ecb4ed6e196b39fe126955c59118d5f090dbca83a9985abf","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","src/specialization.rs":"c6a067616626342b26504ac87dacd4320de1f2d6a692795412750b3c52c23f21","tests/debugger_visualizer.rs":"3b584ac2297d01e10e06e3162112657f8e615c08c8b02f1f66255c676ae25264","TEST_MAPPING":"5a419c7163155a91e02d7a9286f347e2ab6ce5a379de68e54f10b217566f988e","METADATA":"f8b69d086a594a5492881bbce07c6eea4771a57cfbd4b8aec07852763185ebc9","src/arbitrary.rs":"e02f84c3297fe05f999bd8cc2283b0130cc3161bd950f1aaca29a10b961da3c2","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","benches/bench.rs":"f251efa86860f98aa4f9423fbc03caf56ed0b3d09835da9e41cc206c74535dfe","Cargo.toml":"53ecf99b17de3844717ba89d11770686778cc8819269c8872fbd65b4f9e41678","debug_metadata/smallvec.natvis":"479c9285eeb589637c56a36214ebae471d7261528dfa48d231b6d69245b93532","src/tests.rs":"8d208ccf3e42d516d39319fb7cd54ec4f17f444bb8a9d15dccfe55e6b19eec1f","Android.bp":"1e4b6ac1f097c45edc4cd8e87ec8124807d0b642c7bb605afac5d27940e52973","tests/macro.rs":"6dc873dfc1d8cb3175cb8865cb86e9e51eca979d40ae0c6aa47ea2080751c422","cargo_embargo.json":"88d25cd0fee248d4f4bcfa4300c5cd0914f1e7a046a3d0b9e2438c18fe5e42ff",".cargo-checksum.json":"708f69922d9729f09d5c5e35b4316cdcbf09ff34f4501b9635a556e50bf7c312","README.md":"b61db92707b86734601ab3bfaf036f14f1d2520b54d1494a5cbfb47d0facd3ff","src/lib.rs":"45b3057f0d1199b8d07a44e1320edd2bc32efea25c612b8eb4d862e531a3fb54","LICENSE-MIT":"fe6a4e93451059cce8c1c9ddbe92a0fa82ab3e0e5b0a0f001909d45f40dc2a1b","scripts/run_miri.sh":"d2e9617474d74e6ac5a849148366e8ca980f42ffca842986d7e09f3d0f84a755"}}
\ No newline at end of file
diff --git a/crates/smallvec/.cargo-checksum.json b/crates/smallvec/.cargo-checksum.json
index bdb1fcd..894c93a 100644
--- a/crates/smallvec/.cargo-checksum.json
+++ b/crates/smallvec/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"668bb964a243127d65605bb7a0d8d3c81bcbd8f7656a5b5734766ef534b4abcb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"d82015eae942ee5cf74ace8c3c260ee2c6b5bcbeeb87254d2c72622c747a708a","debug_metadata/README.md":"4d7f1c1b2c25ce2231ef71864d06e54323867459035b53bc9e00f66a0a44f82e","debug_metadata/smallvec.natvis":"3092ddebd8fffc3486536d7f27f8c5eae3a8a093d45cd8eeb3946ea2b0c35a15","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"25fe85b6ae7b3972211bf57aeded4c7b72c47e4d843c7a4ba66908442197b5a0","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"29c6e5dad62ebfea74e5116ac4a344b127b91cfb769fe9ba8b02b53773cf7ec8","tests/debugger_visualizer.rs":"185456ad253957fc0c9e904ff8a1135397ac991c29fa3c60f75d8d81f7463022","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"}
\ No newline at end of file
+{"files":{"Cargo.toml":"596bd9699b610b359a05ffa8a628186d640c1090c13f7b980c4a6552630ecdff","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"d82015eae942ee5cf74ace8c3c260ee2c6b5bcbeeb87254d2c72622c747a708a","debug_metadata/README.md":"4d7f1c1b2c25ce2231ef71864d06e54323867459035b53bc9e00f66a0a44f82e","debug_metadata/smallvec.natvis":"3092ddebd8fffc3486536d7f27f8c5eae3a8a093d45cd8eeb3946ea2b0c35a15","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"2ee976afdac5673b05caefa2b74d16af9d3d759e27d71ff3c88ce2623483e601","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"e6484be3421287eba6002ba3bed318f656a17c7c1b041293c69f2eb56f74b375","tests/debugger_visualizer.rs":"185456ad253957fc0c9e904ff8a1135397ac991c29fa3c60f75d8d81f7463022","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"}
\ No newline at end of file
diff --git a/crates/smallvec/Android.bp b/crates/smallvec/Android.bp
index 3c94ecc..919871e 100644
--- a/crates/smallvec/Android.bp
+++ b/crates/smallvec/Android.bp
@@ -18,7 +18,7 @@
     host_supported: true,
     crate_name: "smallvec",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.13.1",
+    cargo_pkg_version: "1.13.2",
     crate_root: "src/lib.rs",
     edition: "2018",
     features: ["write"],
diff --git a/crates/smallvec/Cargo.toml b/crates/smallvec/Cargo.toml
index baba153..dbb5432 100644
--- a/crates/smallvec/Cargo.toml
+++ b/crates/smallvec/Cargo.toml
@@ -12,7 +12,7 @@
 [package]
 edition = "2018"
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 authors = ["The Servo Project Developers"]
 description = "'Small vector' optimization: store up to a small number of items on the stack"
 documentation = "https://docs.rs/smallvec/"
diff --git a/crates/smallvec/METADATA b/crates/smallvec/METADATA
index dcb7b20..a54ecc8 100644
--- a/crates/smallvec/METADATA
+++ b/crates/smallvec/METADATA
@@ -1,17 +1,17 @@
 name: "smallvec"
 description: "\'Small vector\' optimization: store up to a small number of items on the stack"
 third_party {
-  version: "1.13.1"
+  version: "1.13.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
-    month: 2
-    day: 5
+    month: 12
+    day: 20
   }
   homepage: "https://crates.io/crates/smallvec"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/smallvec/smallvec-1.13.1.crate"
-    version: "1.13.1"
+    value: "https://static.crates.io/crates/smallvec/smallvec-1.13.2.crate"
+    version: "1.13.2"
   }
 }
diff --git a/crates/smallvec/src/lib.rs b/crates/smallvec/src/lib.rs
index cadb5d8..1ea3deb 100644
--- a/crates/smallvec/src/lib.rs
+++ b/crates/smallvec/src/lib.rs
@@ -1372,13 +1372,14 @@
             }
             let mut ptr = ptr.as_ptr();
             let len = *len_ptr;
+            if index > len {
+                panic!("index exceeds length");
+            }
+            // SAFETY: add is UB if index > len, but we panicked first
             ptr = ptr.add(index);
             if index < len {
+                // Shift element to the right of `index`.
                 ptr::copy(ptr, ptr.add(1), len - index);
-            } else if index == len {
-                // No elements need shifting.
-            } else {
-                panic!("index exceeds length");
             }
             *len_ptr = len + 1;
             ptr::write(ptr, element);
diff --git a/crates/smallvec/src/tests.rs b/crates/smallvec/src/tests.rs
index 3eab846..f53100c 100644
--- a/crates/smallvec/src/tests.rs
+++ b/crates/smallvec/src/tests.rs
@@ -1023,3 +1023,36 @@
 
     assert_eq!(a, SmallVec::<[i32; 3]>::from_slice(&[1i32, 3, 5, 6, 7, 8]));
 }
+
+/// This assortment of tests, in combination with miri, verifies we handle UB on fishy arguments
+/// given to SmallVec. Draining and extending the allocation are fairly well-tested earlier, but
+/// `smallvec.insert(usize::MAX, val)` once slipped by!
+///
+/// All code that indexes into SmallVecs should be tested with such "trivially wrong" args.
+#[test]
+fn max_dont_panic() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    let _ = sv.get(usize::MAX);
+    sv.truncate(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn max_remove() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    sv.remove(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn max_swap_remove() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    sv.swap_remove(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn test_insert_out_of_bounds() {
+    let mut v: SmallVec<[i32; 4]> = SmallVec::new();
+    v.insert(10, 6);
+}
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 8b5def0..793d0a5 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -4847,9 +4847,9 @@
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 dependencies = [
  "serde",
 ]
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 6484aad..8b26551 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -302,7 +302,7 @@
 shlex = "=1.3.0"
 siphasher = "=1.0.1"
 slab = "=0.4.9"
-smallvec = "=1.13.1"
+smallvec = "=1.13.2"
 smccc = "=0.1.1"
 socket2 = "=0.5.5"
 spin = "=0.9.8"