Re: [Nbd] BUG: oversized 64b offset wrap not detected when offset + len > 64bit and thus wraps
- To: Goswin von Brederlow <goswin-v-b@...186...>
- Cc: nbd-general@lists.sourceforge.net
- Subject: Re: [Nbd] BUG: oversized 64b offset wrap not detected when offset + len > 64bit and thus wraps
- From: folkert <folkert@...421...>
- Date: Tue, 5 Mar 2013 21:51:56 +0100
- Message-id: <20130305205155.GD7515@...855...>
- In-reply-to: <20130305204654.GB7515@...855...>
- References: <20130305092330.GJ14619@...855...> <20130305124827.GA345@...1266...> <20130305204654.GB7515@...855...>
[regarding ssize_t]
> printf("%d\n", sizeof(ssize_t));
> says 8 bytes on a 64b system
>
> On a 32b system that (((ssize_t)((off_t)request.from + len) >
> client->exportsize)) indeed fails dramatically.
> So my fix was not complete :-)
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
uint64_t bla = 10ll * 1024ll *1024ll *1024ll; // will definately overflow on 32b (10GB)
uint32_t bla2 = bla;
printf("%lld\n", (ssize_t)((off_t)bla));
printf("%u\n", bla2);
printf("%d\n", sizeof(ssize_t));
return 0;
}
folkert@...1279... /tmp $ ./a.out
-9223372036854741816
2147483648
4
mauer:/usr/local# ./a.out
10737418240
2147483648
8
Folkert van Heusden
--
MultiTail är ett flexibel redskap för att följa en eller flera logfiler, utföra
kommandon, filtrera, färglägga, sammanfoga, o.s.v...
----------------------------------------------------------------------
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
Reply to: