On Thu, Nov 29, 2018 at 04:51:19PM -0200, Martin Pieuchot wrote:
> Trivial one, ok?
>
> Index: kern/sysv_msg.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/sysv_msg.c,v
> retrieving revision 1.33
> diff -u -p -r1.33 sysv_msg.c
> --- kern/sysv_msg.c 15 Sep 2016 02:00:16 -0000 1.33
> +++ kern/sysv_msg.c 29 Nov 2018 18:47:05 -0000
> @@ -699,7 +699,7 @@ sysctl_sysvmsg(int *name, u_int namelen,
> msginfo.msgmni * sizeof(struct msqid_ds);
>
infolen is calculated twice; the first infolen calculation is used as
argument to malloc(). Your diff makes the second one the size argument
to free(), which doesn't seem correct.
> if (*sizep < infolen) {
> - free(info, M_TEMP, 0);
> + free(info, M_TEMP, infolen);
> return (ENOMEM);
> }
>
> @@ -716,7 +716,7 @@ sysctl_sysvmsg(int *name, u_int namelen,
>
> error = copyout(info, where, infolen);
>
> - free(info, M_TEMP, 0);
> + free(info, M_TEMP, infolen);
>
> return (error);
>
>