4.5.10 on AIX 7.1 [possible solution]
Albert Chin
samba-technical at mlists.thewrittenword.com
Sat Jun 3 18:02:04 UTC 2017
On Mon, May 29, 2017 at 09:15:10PM +0200, Volker Lendecke via samba-technical wrote:
> On Mon, May 29, 2017 at 01:26:52PM -0500, Albert Chin via samba-technical wrote:
> > AIX doesn't like 0-length arrays. If I modify:
> > uint8_t buf[fdlen];
> > to:
> > uint8_t buf[fdlen+1];
> > then things seem to work. Need to do some further testing.
> >
> > So, what is the best wa to fix this?
>
> Thanks for the analysis!
>
> Does the attached patch also fix it?
Yes, it does, on both 4.5.10 and 4.6.4. Please push to master.
> Volker
>
> --
> SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
> phone: +49-551-370000-0, fax: +49-551-370000-9
> AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
> http://www.sernet.de, mailto:kontakt at sernet.de
> From a551afbf8f1ca637aa0df7d14ff54d5c51bc735e Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Mon, 29 May 2017 21:13:16 +0200
> Subject: [PATCH] lib: Fix illegal use of 0-length arrays
>
> Found by albert chin (china at thewrittenword.com)
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> lib/util/msghdr.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/lib/util/msghdr.c b/lib/util/msghdr.c
> index 4b88c1a..fec5446 100644
> --- a/lib/util/msghdr.c
> +++ b/lib/util/msghdr.c
> @@ -37,13 +37,19 @@ ssize_t msghdr_prep_fds(struct msghdr *msg, uint8_t *buf, size_t bufsize,
> msg->msg_control = NULL;
> msg->msg_controllen = 0;
> }
> - return 0;
> + /*
> + * C99 doesn't allow 0-length arrays
> + */
> + return 1;
> }
> if (num_fds > INT8_MAX) {
> return -1;
> }
> if ((msg == NULL) || (cmsg_space > bufsize)) {
> - return cmsg_space;
> + /*
> + * C99 doesn't allow 0-length arrays
> + */
> + return MAX(cmsg_space, 1);
> }
>
> msg->msg_control = buf;
> --
> 2.1.4
--
albert chin (china at thewrittenword.com)
More information about the samba-technical
mailing list