[lvc-project] [PATCH 5.10] crypto: lzo - Fix compression buffer overrun

Fedor Pchelkin pchelkin at ispras.ru
Wed Jun 3 19:06:45 MSK 2026


On Wed, 03. Jun 12:42, Viktoriya Danchenko wrote:
> From: Herbert Xu <herbert at gondor.apana.org.au>
> 
> [ Upstream commit cc47f07234f72cbd8e2c973cdbf2a6730660a463 ]

Не забывайте, git send-email любит ставить в копию автоматических
адресатов из тела патча, которым не всё следует отправлять.  См.
https://portal.linuxtesting.ru/How-to-send-patches-to-kernel.html#Отправка

> @@ -312,6 +347,7 @@ int lzogeneric1x_1_compress(const unsigned char *in, size_t in_len,
>  	size_t t = 0;
>  	signed char state_offset = -2;
>  	unsigned int m4_max_offset;
> +	int err;

Есть какая-то причина, почему переменная `int err` в бэкпорт-версии
определяется для всей функции, а не внутри цикла while на пару десятков
строк ниже, как делает апстримный коммит?

Там где возможно, лучше не отступать от апстрима - здесь не совсем
понятно, зачем это было произведено.

>  
>  	// LZO v0 will never write 17 as first byte (except for zero-length
>  	// input), so this is used to version the bitstream
> @@ -332,10 +368,12 @@ int lzogeneric1x_1_compress(const unsigned char *in, size_t in_len,
>  			break;
>  		BUILD_BUG_ON(D_SIZE * sizeof(lzo_dict_t) > LZO1X_1_MEM_COMPRESS);
>  		memset(wrkmem, 0, D_SIZE * sizeof(lzo_dict_t));
> -		t = lzo1x_1_do_compress(ip, ll, op, out_len, t, wrkmem,
> -					&state_offset, bitstream_version);
> +		err = LZO_SAFE(lzo1x_1_do_compress)(
> +			ip, ll, &op, op_end, &t, wrkmem,
> +			&state_offset, bitstream_version);
> +		if (err != LZO_E_OK)
> +			return err;
>  		ip += ll;
> -		op += *out_len;
>  		l  -= ll;
>  	}
>  	t += l;



More information about the lvc-project mailing list