2) suggest it to the Austin Group for a future POSIX version - either via email or bug report (see https://www.opengroup.org/austin/ ) - though they may want to see some evidence that software is actually calling it first, and I don't see any that does yet.
@nabijaczleweli I don't know about other systems, but on Solaris, Sun originally shipped Solaris 2.0 without a ranlib command, and later added a shell script that only had "exit 0" to deal with complaints about breaking builds of libraries that still called it.
@thesamesam@amonakov@vegard unfortunately, while testing a patch to assume malloc(0) can return NULL in any case, I've hit errors from gcc 14 seemingly thinking our malloc macros limit the array bounds to be either 0 or 1:
@jann this is true, as is the concern that LD_PRELOADing a different malloc implementation is risky, but X11 has gotten away with it for almost 20 years now. (For the twenty years before that, it was hardcoded per-platform in the Imake config files.)
I believe it's mostly an optimization to not have to use a malloc wrapper macro that does (size == 0 ? 1 : size) to the size argument everywhere, and that level of micro-optimization may be pointless now compared to 40 years ago.
Fans of Sun & another SciFi franchise might be sad that the day they celebrate their fandom by saying "May the Forth be with you" doesn't fall in #Suntember, but they may be more disappointed after watching Han Sunlo and Wabi-Wan Kenobi battle Darth Gater in https://vimeo.com/176798587 - which appears to be pasted together from old Flash Gordon footage, instead of filming new footage of #SunMicrosystems execs and Hollywood actors like Sun Trek was. And they couldn't even fit in Luke Stackwalker?
Since no Solaris systems existed before 1970, the timestamp field in the lastlog, utmpx, and wtmpx files in #OracleSolaris 11.4.72 has been redefined as an unsigned 32-bit int, where it was previously signed. This moves the range of possible timestamps from 1901–2038 to 1970–2106. The core OS software has been modified to reflect this, but other software may need changes to handle timestamps in these files with the highest bit set as being post-2037 instead of pre-1970.
NFS mounts in #OracleSolaris 11.4.72 can now use the 'noresvport' option, similar to Linux, to use random port numbers above 1023 for connecting to NFS servers, which can be helpful when multiple #NFS clients are behind the same NAT gateway.
In #OracleSolaris 11.4.72, setting the mountpoint of a #ZFS clone to 'clonedir' will now cause that clone to be mounted under the head filesystem's .zfs/clone directory. Doing a mkdir of a clone name in the .zfs/clone directory will create a snapshot of the dataset and then clone it. The zfs(8) man page was updated with more information.
@ariadne@jamesh most of the callers of open with O_CLOFORK in our code base include O_CLOEXEC as well though, only a few use it independently, mostly in our zones framework (Solaris version of containers).
@ariadne@jamesh we added CLOFORK in Solaris 11.3, almost a decade after adding posix_spawn and converting system & popen to use it in Solaris 10. At the time though, posix_spawn was implemented in Solaris libc as a wrapper around vfork and execve - it was later converted to a become a new system call in 11.4.
As noted in the thread at https://fosstodon.org/@alanc/112901142900834574 the person who implemented CLOFORK for us doesn't remember discussion of what to do across exec calls at the time.
@guenther@brynet we've shipped O_CLOFORK support since Solaris 11.3. I'm not sure how it handles the case of CLOFORK without CLOEXEC though. @jlevon did the original implementation back in 2014, and Casper Dik updated it in 2020 once the standard committee decided to adopt it.
I believe AIX & MacOS had implemented before we did, as had a proposed patch for Linux that wasn't accepted at the time.
@lanodan certainly the GNU libc maintainers could add attribute(warn_unused_result) to the asprintf prototype in their header files if they want to insist on this.
As @solardiz noted in the followup post at https://www.openwall.com/lists/oss-security/2024/07/26/2 the standard unfortunately allowed the GNU libc behavior of not guaranteeing the pointer would be NULL on failure, requiring users to check the return value, despite all the known non-GNU implementations guaranteeing to set it to NULL on failure, meaning that even though the standard requires asprintf() be provided, portable software still has to be aware of the different implementations.
Solaris Engineer at Sun^H^H^HOracle (Release management, Security, X11, GNOME); former board member of X.Org Foundation & OpenSolaris. http://pronoun.is/he