File tree Expand file tree Collapse file tree
crates/ostree-ext/src/tar Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -53,17 +53,16 @@ pub(crate) fn copy_entry(
5353 // append_data/append_link. Keeping the originals would override our
5454 // remap (e.g. /etc -> /usr/etc) since PAX headers take precedence
5555 // over basic tar header fields per POSIX.
56- let extensions: Vec < _ > = headers
57- . map ( |ext| {
58- let ext = ext?;
59- Ok ( ( ext. key ( ) ?, ext. value_bytes ( ) ) )
60- } )
61- . collect :: < Result < Vec < _ > > > ( ) ?
62- . into_iter ( )
63- . filter ( |( key, _) | * key != "path" && * key != "linkpath" )
64- . collect ( ) ;
65- if !extensions. is_empty ( ) {
66- dest. append_pax_extensions ( extensions. iter ( ) . copied ( ) ) ?;
56+ let mut extensions_to_keep = Vec :: new ( ) ;
57+ for ext_res in headers {
58+ let ext = ext_res?;
59+ let key = ext. key ( ) ?;
60+ if key != "path" && key != "linkpath" {
61+ extensions_to_keep. push ( ( key, ext. value_bytes ( ) ) ) ;
62+ }
63+ }
64+ if !extensions_to_keep. is_empty ( ) {
65+ dest. append_pax_extensions ( extensions_to_keep) ?;
6766 }
6867 }
6968
@@ -681,7 +680,8 @@ mod tests {
681680 found_remapped = true ;
682681 }
683682 if let Some ( pax) = entry. pax_extensions ( ) ? {
684- for ext in pax. flatten ( ) {
683+ for ext_res in pax {
684+ let ext = ext_res?;
685685 if let Ok ( "path" | "linkpath" ) = ext. key ( ) {
686686 let value = String :: from_utf8_lossy ( ext. value_bytes ( ) ) ;
687687 let clean = value. trim_start_matches ( "./" ) . trim_end_matches ( '\0' ) ;
You can’t perform that action at this time.
0 commit comments