]> granicus.if.org Git - php/commitdiff
Handle gr_mem misalignment on macos
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 20 Jun 2019 14:06:54 +0000 (16:06 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 20 Jun 2019 15:24:06 +0000 (17:24 +0200)
ext/posix/posix.c

index e95064d0fa322480431f097733132f69fdd951f6..98dae1ca3c9b727da85ee5a8389ff1256b53bf44 100644 (file)
@@ -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);