On Thu, Dec 12, 2019 at 1:03 PM Andrea Fioraldi
<[email protected]> wrote:
>
> Hi to all,
Hi Andrea,
> there is a way to poison bytes as read-only in the ASAN runtime?
> For instance, I have a type field in a dynamic allocated structure that is
> assigned only at creation
> and I want to mark it as read-only after the first assignment to detect
> type-confusions.
> I found nothing searching about it in compiler-rt and so this is more a
> feature request, but maybe I missed it and already exists.
No, right now it's not possible. ASan instrumentation doesn't
distinguish between a read and a write.
This can be done on LLVM side, but additional complication doesn't
sound necessary, especially given that there won't be any automated
way to mark data read-only.
Without that this feature will have limited use.
If you need a one-off solution for marking some small amount of data
read-only, you can allocate a page-aligned memory chunk with mmap(),
store your data in it and seal it with mprotect().
HTH,
Alex
>
> Something like the following snippet would be useful:
>
> enum {
> IS_INT,
> IS_FLOAT
> };
> struct foo {
> int type;
> union { int i; float f };
> };
>
> struct foo* create_int_foo(int i) {
> struct foo * f = malloc(sizeof(struct foo));
> f->i = i;
> f->type = IS_INT;
> ASAN_POISON_RDONLY_MEMORY_REGION(&f->type, sizeof(int));
> }
>
> Thank you!
>
> --
> You received this message because you are subscribed to the Google Groups
> "address-sanitizer" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/address-sanitizer/29bb9619-d1ba-4426-8eaf-068b3c795337%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/address-sanitizer/CAE4VGWyCbLLW9bYn96KZUyQTtEa38m9ASY2yuEm614Q9bEz-cQ%40mail.gmail.com.