A bus error is usually an alignment problem. I can see how this
could happen on 64-bit machines with strict alignment requirements
(such as sparc64).
The following patch fixes the problem for me. It will be part of
a sudo 1.8.2p1 release.
- todd
diff -r d161b82321da plugins/sudoers/pwutil.c
--- a/plugins/sudoers/pwutil.c Thu Sep 15 19:56:34 2011 -0400
+++ b/plugins/sudoers/pwutil.c Fri Sep 16 08:19:18 2011 -0400
@@ -508,16 +533,16 @@
/*
* Copy in group list and make pointers relative to space
- * at the end of the buffer. Note that the gids array must come
+ * at the end of the buffer. Note that the groups array must come
* immediately after struct group to guarantee proper alignment.
*/
grlist = (struct group_list *)cp;
zero_bytes(grlist, sizeof(struct group_list));
cp += sizeof(struct group_list);
+ grlist->groups = (char **)cp;
+ cp += sizeof(char *) * ngids;
grlist->gids = (gid_t *)cp;
cp += sizeof(gid_t) * ngids;
- grlist->groups = (char **)cp;
- cp += sizeof(char *) * ngids;
/* Set key and datum. */
memcpy(cp, user, nsize);
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]