Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Проблема с нулевым байтом в ngx_crypt()
- To: nginx-ru@xxxxxxxxx
- Subject: Проблема с нулевым байтом в ngx_crypt()
- From: Laletin Michail <dedmustdie@xxxxxxxxx>
- Date: Mon, 29 Nov 2010 11:17:46 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:from:date :message-id:subject:to:content-type:content-transfer-encoding; bh=kaWnzce5wfrMLPotgDol/65gWFyfu2CijrNMDr239Js=; b=lbKCTufpzGE79xN1dESihErdOmnCy6yULCKky0LgsGT6ukBuYxpsBmH9YLrteVv6nc h9LVXbdPufZ+ZXusPvY9UoD31miAERIAUdefAbhYvV0X4UZMGv9pMOdddhVJa+ZvkRDi FsZxZ7bwxpgN3Z8dXfsUBYK2AqBp/k+io8NQU=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type :content-transfer-encoding; b=SHq5Zq6yUX1nGLBGffr04uxGkLSoYWaTxTeu//vyOGi7A/hQ0AkOhs494C0kjeWoIE hqBYlj3eIMtP8lZR6GtHmTe7eXcdp0EsHPaCLTXVs+YHTJkh8CPdqkCgJozMt1Y+EGfY Eo0EepptSkZ/k3Nz9j8gwzTl1gtuV7z0cNbd4=
src/os/unix/ngx_user.c
81 if (value) {
82 len = ngx_strlen(value);
83
84 *encrypted = ngx_pnalloc(pool, len);
85 if (*encrypted) {
86 ngx_memcpy(*encrypted, value, len + 1);
87 }
Под строку encrypted выделяется место без учёта нулевого байта на
конце (len байт).
А копируется len + 1 байт.
У меня из-за этого строка encrypted вылезает за пределы ngx_pool_s в
которой для неё
зарезервировано место и затирает один байт в следующей ngx_pool_s,
повреждая d.last.
В конечном итоге это приводит к полному затиранию d.last d.end и потом
segmentation violation.
-----------------------------------
Лалетин Михаил
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|