mailing list of musl libc
 help / color / Atom feed
* [musl] [PATCH v2] cuserid: support invocation with a NULL pointer argument
@ 2020-01-29 11:20 Sören Tempel
  2020-01-29 11:59 ` Sören Tempel
  0 siblings, 1 reply; 2+ messages in thread
From: Sören Tempel @ 2020-01-29 11:20 UTC (permalink / raw)
  To: musl

I did not manage to find a copy of IEEE 1003.1-1988 (the last POSIX
version where cuserid was last standardized) the Single UNIX
specification version 2 does state the following though [1]:

	If s is a null pointer, this representation is generated in an
	area that may be static (and thus overwritten by subsequent
	calls to cuserid()), the address of which is returned.

Even though this a legacy function it would therefore be nice for musl
to support usage with a NULL pointer. I ran into this on Alpine Linux
when using cdparanoia [2] which uses cuserid like this and therefore
caused a crash on my system.

[1]: https://pubs.opengroup.org/onlinepubs/7908799/xsh/cuserid.html
[2]: https://xiph.org/paranoia/index.html
---
 src/legacy/cuserid.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/legacy/cuserid.c b/src/legacy/cuserid.c
index 4e78798d..fd7832e4 100644
--- a/src/legacy/cuserid.c
+++ b/src/legacy/cuserid.c
@@ -5,10 +5,12 @@
 
 char *cuserid(char *buf)
 {
+	static char usridbuf[L_cuserid];
 	struct passwd pw, *ppw;
 	long pwb[256];
 	if (getpwuid_r(geteuid(), &pw, (void *)pwb, sizeof pwb, &ppw))
 		return 0;
+	if (!buf) buf = usridbuf;
 	snprintf(buf, L_cuserid, "%s", pw.pw_name);
 	return buf;
 }

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [musl] [PATCH v2] cuserid: support invocation with a NULL pointer argument
  2020-01-29 11:20 [musl] [PATCH v2] cuserid: support invocation with a NULL pointer argument Sören Tempel
@ 2020-01-29 11:59 ` Sören Tempel
  0 siblings, 0 replies; 2+ messages in thread
From: Sören Tempel @ 2020-01-29 11:59 UTC (permalink / raw)
  To: musl

Sorry, forgot to confirm my list subscription before sending the first
version of this patch. Just wanted to reply to a comment on the previous
version:

On Tue, 28 Jan 2020, Rich Felker wrote:
> I'm not sure whether to adopt this or not, but thanks for posting on
> the list for discussion. In any case it's something we should try to
> get fixed in apps that are using it, since this is no longer portable
> usage and is gratuitously thread-unsafe.

From my personal Alpine Linux packaging perspective: I would prefer
either removing the function entirely or supporting the invocation with
a NULL pointer argument. Currently, apps using this with a NULL pointer
(e.g. cdparanoia) will crash at runtime which makes it more difficult to
identify them. If the function would be removed entirely we would be
able to detect, during compilation, which apps use it and patch them
accordingly.

Cheers,
Sören

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-29 11:20 [musl] [PATCH v2] cuserid: support invocation with a NULL pointer argument Sören Tempel
2020-01-29 11:59 ` Sören Tempel

mailing list of musl libc

Archives are clonable: git clone --mirror http://inbox.vuxu.org/musl

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.musl


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git