Commit be55be0a4db for php.net
commit be55be0a4db5cc681b5ec0544fc602706a3b697e
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date: Wed Jun 24 07:34:59 2026 -0400
Fix posix_getgrnam()/posix_getgrgid() crash on NULL group name
php_posix_group_to_array() passed gr_name straight to add_assoc_string()
with no NULL guard, so a NULL group name segfaults via zend_string_init(),
while the sibling gr_passwd field right below is already guarded. glibc's
files NSS backend normalizes empty fields to "", but third-party NSS
modules (nss-systemd, nss-ldap, sssd and other directory backends)
populate struct group directly and may leave gr_name NULL. Guard it and
emit null instead, matching the existing gr_passwd handling.
Closes GH-22433
diff --git a/ext/posix/posix.c b/ext/posix/posix.c
index 38f7eaa4186..b659207f67b 100644
--- a/ext/posix/posix.c
+++ b/ext/posix/posix.c
@@ -669,7 +669,11 @@ int php_posix_group_to_array(struct group *g, zval *array_group) /* {{{ */
array_init(&array_members);
- add_assoc_string(array_group, "name", g->gr_name);
+ if (g->gr_name) {
+ add_assoc_string(array_group, "name", g->gr_name);
+ } else {
+ add_assoc_null(array_group, "name");
+ }
if (g->gr_passwd) {
add_assoc_string(array_group, "passwd", g->gr_passwd);
} else {