Bug 42189 - cpio 2.13 убирает ведущий слеш у симлинков
Summary: cpio 2.13 убирает ведущий слеш у симлинков
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: cpio (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 42561
  Show dependency tree
 
Reported: 2022-03-20 23:20 MSK by Vitaly Lipatov
Modified: 2024-04-03 15:23 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2022-03-20 23:20:31 MSK
* Пт дек 10 2021 Gleb F-Malinovskiy <glebfm@altlinux.org> 2.13-alt1
- Updated to 2.13.
Comment 1 Vitaly Lipatov 2022-03-20 23:26:49 MSK
Это баг в cpio-2.13: relative symlink handling with --no-absolute-filenames
https://lists.gnu.org/archive/html/bug-cpio/2019-11/msg00016.html

Корректный архив:
$ cpio -i -t -v -F 2.cpio
drwxrwxr-x   2 lav      users           0 Mar 20 23:10 1
lrwxrwxrwx   1 lav      users          13 Mar 20 23:10 1/bash -> /usr/bin/bash

Распаковка:
$ cpio --extract --make-directories --no-absolute-filenames < 2.cpio
cpio: Removing leading `/' from hard link targets
1 block

Битый симлинк в итоге:
$ ls -l 1/
итого 0
lrwxrwxrwx 1 lav users 12 мар 20 23:24 bash -> usr/bin/bash

Причём проблема только при указании --no-absolute-filenames, то есть она не применяется по умолчанию, несмотря на комментарий
https://bugzilla.altlinux.org/show_bug.cgi?id=9226#c2


Аналогичная бага в Gentoo:
https://bugs.gentoo.org/700020
Comment 2 Vitaly Lipatov 2022-12-14 11:51:03 MSK
Спустя 2 года в Gentoo багу закрыли:
https://bugs.gentoo.org/700020#c15

Очень ждём исправления и в Сизифе (в p10 пока что 2.12, возможно, с CVE, но без этой баги).
Comment 3 Mikhail Tergoev 2023-05-26 14:16:09 MSK
Есть новая версия cpio 2.14
История изменения:
https://savannah.gnu.org/news/?id=10359
Нас интересует пункт:
* Rewrite the fix for CVE-2015-1197

Но для обновления cpio необходимо обновить autoconf до версии 2.71+
https://bugzilla.altlinux.org/42349
Comment 4 Vitaly Lipatov 2023-05-26 14:58:17 MSK
(Ответ для Mikhail Tergoev на комментарий #3)
> Есть новая версия cpio 2.14
> История изменения:
> https://savannah.gnu.org/news/?id=10359
> Нас интересует пункт:
> * Rewrite the fix for CVE-2015-1197
> 
> Но для обновления cpio необходимо обновить autoconf до версии 2.71+
> https://bugzilla.altlinux.org/42349

Ещё есть вариант добавить только исправляющий патч в нынешнюю 2.13.
Comment 5 Dmitry V. Levin 2023-05-27 22:35:26 MSK
(In reply to Mikhail Tergoev from comment #3)
> Но для обновления cpio необходимо обновить autoconf до версии 2.71+
> https://bugzilla.altlinux.org/42349

Прямо-таки необходимо?  Можете обосновать это утверждение?
Comment 6 Vitaly Lipatov 2024-03-03 21:51:21 MSK
В 2024 году уже есть новая версия 2.15.
Comment 7 Ivan Mazhukin 2024-04-02 21:33:30 MSK
Создаю тестовый архив и тестовый симлинк:
mkdir testcpio && cd testcpio
mkdir 1 
ln -s /usr/bin/bash 1/bash
find $HOME/testcpio/ -depth | cpio -o > test.cpio

Проверяю архив:
$ cpio -i -t -v -F test.cpio
-rw-r--r--   1 vano     vano            0 Apr  2 21:15 /home/vano/testcpio/1/test.cpio
lrwxrwxrwx   1 vano     vano           13 Apr  2 21:14 /home/vano/testcpio/1/bash -> /usr/bin/bash
drwxr-xr-x   2 vano     vano            0 Apr  2 21:15 /home/vano/testcpio/1
drwxr-xr-x   3 vano     vano            0 Apr  2 21:12 /home/vano/testcpio/

Распаковка:
$ cpio --extract --make-directories --no-absolute-filenames < test.cpio
cpio: Из имён членов удаляются начальные `/'
1 блок


Проверяю распакованый симлинк:
$ ls -l ~/testcpio/home/vano/testcpio/1/
итого 0
lrwxrwxrwx 1 vano vano 13 апр  2 21:17 bash -> /usr/bin/bash

С ним всё нормально. 
Проверял на версии cpio 2.15
Comment 8 Vitaly Lipatov 2024-04-03 15:23:32 MSK
(Ответ для Ivan Mazhukin на комментарий #7)
...
> Проверял на версии cpio 2.15
Да, как раз там исправлено:

GNU cpio version 2.15 is available for download. This is a bug-fixing release.  Short summary of changes:

Fix the operation of --no-absolute-filenames --make-directories.
Restore access and modification times of symlinks in copy-in and copy-pass modes