This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new e3dfd4899b deploy: d1fb2c6a0a07d3e28fb41287c0b5e1dc8fc032e5
e3dfd4899b is described below

commit e3dfd4899ba546c12b2e456b70d397f8549c8e34
Author: tustvold <[email protected]>
AuthorDate: Mon Jul 31 13:58:14 2023 +0000

    deploy: d1fb2c6a0a07d3e28fb41287c0b5e1dc8fc032e5
---
 parquet/file/footer/fn.decode_footer.html       |  2 +-
 parquet/file/footer/fn.parse_column_orders.html |  2 +-
 parquet/file/footer/index.html                  |  2 +-
 src/parquet/file/footer.rs.html                 | 34 ++++++++++++++++++++++---
 src/parquet/file/writer.rs.html                 |  2 +-
 5 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/parquet/file/footer/fn.decode_footer.html 
b/parquet/file/footer/fn.decode_footer.html
index d265b72611..c6c36f09da 100644
--- a/parquet/file/footer/fn.decode_footer.html
+++ b/parquet/file/footer/fn.decode_footer.html
@@ -1,2 +1,2 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Decodes 
the footer returning the metadata length in bytes"><title>decode_footer in 
parquet::file::footer - Rust</title><link rel="preload" as="font" 
type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
 rel="preload" as="font" ty [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Decodes 
the footer returning the metadata length in bytes"><title>decode_footer in 
parquet::file::footer - Rust</title><link rel="preload" as="font" 
type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
 rel="preload" as="font" ty [...]
 </div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/file/footer/fn.parse_column_orders.html 
b/parquet/file/footer/fn.parse_column_orders.html
index 28fda528c2..0807dd32a3 100644
--- a/parquet/file/footer/fn.parse_column_orders.html
+++ b/parquet/file/footer/fn.parse_column_orders.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Parses 
column orders from Thrift definition. If no column orders are defined, returns 
`None`."><title>parse_column_orders in parquet::file::footer - 
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.t [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Parses 
column orders from Thrift definition. If no column orders are defined, returns 
`None`."><title>parse_column_orders in parquet::file::footer - 
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.t [...]
     t_column_orders: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"; 
title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" 
href="../../format/enum.ColumnOrder.html" title="enum 
parquet::format::ColumnOrder">ColumnOrder</a>&gt;&gt;,
     schema_descr: &amp;<a class="struct" 
href="../../schema/types/struct.SchemaDescriptor.html" title="struct 
parquet::schema::types::SchemaDescriptor">SchemaDescriptor</a>
 ) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"; 
title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" 
href="../../basic/enum.ColumnOrder.html" title="enum 
parquet::basic::ColumnOrder">ColumnOrder</a>&gt;&gt;</code></pre><details 
class="toggle top-doc" open><summary class="hideme"><span>Expand 
description</sp [...]
diff --git a/parquet/file/footer/index.html b/parquet/file/footer/index.html
index fb3395c992..76f1a1988f 100644
--- a/parquet/file/footer/index.html
+++ b/parquet/file/footer/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="API 
documentation for the Rust `footer` mod in crate 
`parquet`."><title>parquet::file::footer - Rust</title><link rel="preload" 
as="font" type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
 rel="preload" as="font" type="font/wo [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="API 
documentation for the Rust `footer` mod in crate 
`parquet`."><title>parquet::file::footer - Rust</title><link rel="preload" 
as="font" type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link
 rel="preload" as="font" type="font/wo [...]
 If no column orders are defined, returns <code>None</code>.</div></li><li><div 
class="item-name"><a class="fn" href="fn.parse_metadata.html" title="fn 
parquet::file::footer::parse_metadata">parse_metadata</a></div><div class="desc 
docblock-short">Layout of Parquet file
 +—————————+—–+—+
 |      Rest of file         |  B  | A |
diff --git a/src/parquet/file/footer.rs.html b/src/parquet/file/footer.rs.html
index f67f9f20d7..beb9853e34 100644
--- a/src/parquet/file/footer.rs.html
+++ b/src/parquet/file/footer.rs.html
@@ -231,6 +231,20 @@
 <a href="#231" id="231">231</a>
 <a href="#232" id="232">232</a>
 <a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the 
Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -336,9 +350,13 @@
     }
 
     <span class="comment">// get the metadata length from the footer
-    </span><span class="kw">let </span>metadata_len = 
u32::from_le_bytes(slice[..<span class="number">4</span>].try_into().unwrap());
-    <span class="comment">// u32 won&#39;t be larger than usize in most cases
-    </span><span class="prelude-val">Ok</span>(metadata_len <span 
class="kw">as </span>usize)
+    </span><span class="kw">let </span>metadata_len = 
i32::from_le_bytes(slice[..<span class="number">4</span>].try_into().unwrap());
+    metadata_len.try_into().map_err(|<span class="kw">_</span>| {
+        <span class="macro">general_err!</span>(
+            <span class="string">&quot;Invalid Parquet file. Metadata length 
is less than zero ({})&quot;</span>,
+            metadata_len
+        )
+    })
 }
 
 <span class="doccomment">/// Parses column orders from Thrift definition.
@@ -404,6 +422,16 @@
         </span>);
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_parse_metadata_invalid_length() {
+        <span class="kw">let </span>test_file = Bytes::from(<span 
class="macro">vec!</span>[<span class="number">0</span>, <span 
class="number">0</span>, <span class="number">0</span>, <span 
class="number">255</span>, <span class="string">b&#39;P&#39;</span>, <span 
class="string">b&#39;A&#39;</span>, <span class="string">b&#39;R&#39;</span>, 
<span class="string">b&#39;1&#39;</span>]);
+        <span class="kw">let </span>reader_result = parse_metadata(<span 
class="kw-2">&amp;</span>test_file);
+        <span class="macro">assert_eq!</span>(
+            reader_result.unwrap_err().to_string(),
+            <span class="string">&quot;Parquet error: Invalid Parquet file. 
Metadata length is less than zero (-16777216)&quot;
+        </span>);
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_parse_metadata_invalid_start() {
         <span class="kw">let </span>test_file = Bytes::from(<span 
class="macro">vec!</span>[<span class="number">255</span>, <span 
class="number">0</span>, <span class="number">0</span>, <span 
class="number">0</span>, <span class="string">b&#39;P&#39;</span>, <span 
class="string">b&#39;A&#39;</span>, <span class="string">b&#39;R&#39;</span>, 
<span class="string">b&#39;1&#39;</span>]);
diff --git a/src/parquet/file/writer.rs.html b/src/parquet/file/writer.rs.html
index a85a6dc1eb..ed9c73ba07 100644
--- a/src/parquet/file/writer.rs.html
+++ b/src/parquet/file/writer.rs.html
@@ -1998,7 +1998,7 @@
         <span class="kw">let </span>end_pos = <span 
class="self">self</span>.buf.bytes_written();
 
         <span class="comment">// Write footer
-        </span><span class="kw">let </span>metadata_len = (end_pos - 
start_pos) <span class="kw">as </span>u32;
+        </span><span class="kw">let </span>metadata_len = (end_pos - 
start_pos) <span class="kw">as </span>i32;
 
         <span class="self">self</span>.buf.write_all(<span 
class="kw-2">&amp;</span>metadata_len.to_le_bytes())<span 
class="question-mark">?</span>;
         <span class="self">self</span>.buf.write_all(<span 
class="kw-2">&amp;</span>PARQUET_MAGIC)<span class="question-mark">?</span>;

Reply via email to