All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: ltp@lists.linux.it, David Hildenbrand <david@redhat.com>
Subject: Re: [LTP] [PATCH v1] execl(), execlp() and execle() require proper termination of argument list
Date: Mon, 28 Nov 2022 12:11:08 +0100	[thread overview]
Message-ID: <Y4SXTPBViJiqulow@pevik> (raw)
In-Reply-To: <58d046ff-c89c-611c-0607-c2ec8f556526@redhat.com>

Hi Michael,

sorry to bother you, could you please comment our discussion about execl{,e,p}()
termination of argument list being NULL vs. (char *)NULL vs. (void*)0?

Martin reported [2] that man page suggests (char*)NULL, his view of reason [3]:
NULL may be defined as simple integer 0. When int is 32bit and pointers
64bit, this will cause trouble in variadic functions such as execlp().

Cyril pointed out [4]: NULL is required to be 0 cast to void* in POSIX. [5]

Therefore what should be really used?

Kind regards,
Petr

[2] https://lore.kernel.org/ltp/8587b908-a035-a96a-7233-2863b7bc30ca@suse.cz/
[3] https://lore.kernel.org/ltp/af63ed9a-7108-fd19-fe2c-4b56be85d068@suse.cz/
[4] https://lore.kernel.org/ltp/Y4DSmk7uY9zUUQsV@yuki/
[5] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html

> On 25.11.22 15:06, Petr Vorel wrote:
> > Hi David,

> > thanks for fixing this!

> > Reviewed-by: Petr Vorel <pvorel@suse.cz>

> This seems to be quite a controversial topic :)

> I stumbled over [1], which still left me confused regarding what to do and
> what to not do.

> Interestingly, the problem doesn't seem to be that NULL is defined in a
> strange way, but that the representation of (void *)NULL and (char *)NULL
> might be (weirdly enough) different, and that no explicit cast could result
> in undefined behavior.


> IIUC, the second answer indicates that with C99 it might be fine, because
> that case is defined behavior ("one type is pointer to void and the other is
> a pointer to a character type.").


> Having that said, I have cannot really tell if this change must be
> performed. :)


> [1] https://stackoverflow.com/questions/52195275/can-the-compiler-cast-void-0-in-execlprog-arg-void-0-to-a-null-po

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  reply	other threads:[~2022-11-28 11:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-25 12:25 [LTP] [PATCH v1] execl(), execlp() and execle() require proper termination of argument list David Hildenbrand
2022-11-25 14:06 ` Petr Vorel
2022-11-28  9:45   ` David Hildenbrand
2022-11-28 11:11     ` Petr Vorel [this message]
2022-11-28 12:00       ` Martin Doucha
2022-11-29 14:22         ` Richard Palethorpe
2022-12-05  9:22           ` Richard Palethorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y4SXTPBViJiqulow@pevik \
    --to=pvorel@suse.cz \
    --cc=david@redhat.com \
    --cc=ltp@lists.linux.it \
    --cc=mtk.manpages@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.