[devel] Re: librpm payload
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пн Сен 5 13:09:23 MSD 2005
On Mon, Sep 05, 2005 at 07:43:57AM +0400, Alexey Tourbin wrote:
> On Sat, Sep 03, 2005 at 01:00:07AM +0400, Dmitry V. Levin wrote:
> > librpmio может предоставить cpio-архив в виде обычного потока, для
> > которого, кажется, применимы операции типа fsetpos(3). Но поскольку этот
> > cpio-архив на практике запакован, прозрачной распаковки всё равно не
> > миновать. Считать первые N байт каждого файла этого cpio-потока librpmio
> > вряд ли поможет, лучше поискать другие средства.
>
> Как читать поток cpio, я разобрался. Теперь дальше, как парсить cpio?
Его даже ядро читать умеет (в initramfs) ;)
> У него какой-то хитрый padding (см. TODO). Как libmagic подключить --
> вроде ясно, magic_buffer().
#define N_ALIGN(len) ((((len) + 1) & ~3) + 2)
...
parse_header(collected);
/* тут this_header уже продвинут за struct cpio_header */
next_header = this_header + N_ALIGN(name_len) + body_len;
next_header = (next_header + 3) & ~3;
Правда, после SkipIt (пропуск до позиции next_header) там есть ещё
Reset:
static int __init do_reset(void)
{
while(count && *victim == '\0')
eat(1);
if (count && (this_header & 3))
error("broken padding");
return 1;
}
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20050905/fcd84edb/attachment-0001.bin>
Подробная информация о списке рассылки Devel