[Libguestfs] [PATCH nbdkit v2 6/6] New filter: evil
Richard W.M. Jones
rjones at redhat.com
Thu May 18 10:07:19 UTC 2023
On Wed, May 17, 2023 at 05:32:50PM -0500, Eric Blake wrote:
> On Wed, May 17, 2023 at 11:06:59AM +0100, Richard W.M. Jones wrote:
> > +static void
> > +corrupt_all_bits (uint8_t *buf, uint32_t count,
> > + struct random_state *rs, enum corruption_type ct)
> > +{
> > + size_t i;
> > + unsigned bit;
> > + uint64_t rand;
> > +
> > + /* This is used when MAXP < P <= 100%. We treat it the same as 100%
> > + * and corrupt all bits.
> > + */
> > + for (i = 0; i < count; ++i) {
> > + for (bit = 0; bit < 8; ++bit) {
> > + rand = xrandom (rs);
> > + buf[i] = corrupt_one_bit (buf[i], bit, rand, ct);
> > + }
> > + }
>
> Is this actually corrupting all bits, or corrupting 1 bit per byte? I
> found the function name a bit confusing. (Doing XOR with -1 to invert
> all bits is not the same as choosing a random bit pattern but where
> only about 50% of the bits get flipped - but both behaviors can prove
> interesting to see how filesystems cope with such corruptions)
Isn't it corrupting each bit in turn, in effect corrupting all of
them? However we could use a local variable to store buf[i] during
the inner loop.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list