svn commit: r368022 - head/lib/libsysdecode
John Baldwin
jhb at FreeBSD.org
Wed Nov 25 21:41:55 UTC 2020
On 11/25/20 8:30 AM, Pawel Biernacki wrote:
> Author: kaktus
> Date: Wed Nov 25 16:30:57 2020
> New Revision: 368022
> URL: https://svnweb.freebsd.org/changeset/base/368022
>
> Log:
> libsysdecode: correctly decode mmap flags
>
> r352913 added decoding of mmap PROT_MAX()'d flags but didn’t account for the
> case where different values were specified for PROT_MAX and regular flags.
> Fix it.
>
> Submitted by: sigsys_gmail.com
> Reported by: sigsys_gmail.com
> MFC after: 7 days
> Differential Revision: https://reviews.freebsd.org/D27312
>
> Modified:
> head/lib/libsysdecode/flags.c
>
> Modified: head/lib/libsysdecode/flags.c
> ==============================================================================
> --- head/lib/libsysdecode/flags.c Wed Nov 25 15:45:20 2020 (r368021)
> +++ head/lib/libsysdecode/flags.c Wed Nov 25 16:30:57 2020 (r368022)
> @@ -662,11 +662,11 @@ sysdecode_mmap_prot(FILE *fp, int prot, int *rem)
>
> printed = false;
> protm = PROT_MAX_EXTRACT(prot);
> + prot = PROT_EXTRACT(prot);
> if (protm != 0) {
> fputs("PROT_MAX(", fp);
> printed = print_mask_int(fp, mmapprot, protm, rem);
> fputs(")|", fp);
> - prot = protm;
This was probably meant to be something more like 'prot &= ~PROT_MAX(protm);'.
As it is, if there are any invalid bits set, those are now lost. The change
to mask off only the PROT_MAX bits would preserve any invalid/unknown bits.
(To test, try passing -1 or the like as a prot value and comparing the
decoded output for kdump or truss.)
--
John Baldwin
More information about the svn-src-all
mailing list