From: Nikita Popov Date: Thu, 20 Jun 2019 14:06:54 +0000 (+0200) Subject: Handle gr_mem misalignment on macos X-Git-Tag: php-7.4.0alpha2~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d80f0ff6c0a557d8c993a9d2bd006fb488f6d564;p=php Handle gr_mem misalignment on macos --- diff --git a/ext/posix/posix.c b/ext/posix/posix.c index e95064d0fa..98dae1ca3c 100644 --- a/ext/posix/posix.c +++ b/ext/posix/posix.c @@ -998,8 +998,15 @@ int php_posix_group_to_array(struct group *g, zval *array_group) /* {{{ */ } else { add_assoc_null(array_group, "passwd"); } - for (count = 0; g->gr_mem[count] != NULL; count++) { - add_next_index_string(&array_members, g->gr_mem[count]); + for (count = 0;; count++) { + /* gr_mem entries may be misaligned on macos. */ + char *gr_mem; + memcpy(&gr_mem, &g->gr_mem[count], sizeof(char *)); + if (!gr_mem) { + break; + } + + add_next_index_string(&array_members, gr_mem); } zend_hash_str_update(Z_ARRVAL_P(array_group), "members", sizeof("members")-1, &array_members); add_assoc_long(array_group, "gid", g->gr_gid);