Pádraig Brady <[email protected]> writes:

> BTW I used affirm() instead so that --disable-assert is effective
> and can be used to help optimization if desired in release builds,
> while the normal / dev builds will have assert protection in place.
>
> As for -fsanitize=undefined, that's OK for devs,
> but you don't get that protection for folks doing
> a standard build for platform testing for example.
>
> Testing -fsanitize=undefined with the bug just now...
>
> We've most warnings disabled with clang, so I do get a good error:
> $ echo 'SHA2-128 (/dev/null) = 38b060a751ac96384cd9327eb1b1e36a' | src/cksum 
> --check
> src/digest.c:303:7: runtime error: execution reached an unreachable program 
> point
> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior src/digest.c:303:7
>
> However when I enable -fsanitize=undefined with gcc 15.2.1
> I get a slew of -Werror=maybe-uninitialized.
> So not very plug and play yet even for devs.

I guess there is benefit to not having to enable sanitizers which slow
things down too much for normal use.

Can we write 'assume (false)' instead of 'assume (0)', though?

    $ git ls-files | grep '\.[ch]' | xargs grep -F 'affirm (false);' | wc -l
    9
    $ git ls-files | grep '\.[ch]' | xargs grep -F 'affirm (0);' 
    src/digest.c:      affirm (0);
    src/digest.c:      affirm (0);

Not sure it deserves a syntax check, but it wouldn't be too difficult.

Collin

Reply via email to