From 88cf064fb4ac722913a4fe81e71c2503442fb935 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Fri, 16 Sep 2011 09:40:30 -0600 Subject: [PATCH] fold in a fix from upstream --- debian/changelog | 6 +++++ debian/patches/series | 1 + debian/patches/upstream-sigbus-fix | 37 ++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 debian/patches/upstream-sigbus-fix diff --git a/debian/changelog b/debian/changelog index f6333bc..5032595 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +sudo (1.8.2-2) UNRELEASED; urgency=low + + * patch from upstream for SIGBUS on sparc64, closes: #640304 + + -- Bdale Garbee Fri, 16 Sep 2011 09:40:03 -0600 + sudo (1.8.2-1) unstable; urgency=low * new upstream version, closes: #637449, #621830 diff --git a/debian/patches/series b/debian/patches/series index 5e1f561..4e3aa5b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,3 @@ typo-in-classic-insults.diff paths-in-samples.diff +upstream-sigbus-fix diff --git a/debian/patches/upstream-sigbus-fix b/debian/patches/upstream-sigbus-fix new file mode 100644 index 0000000..7e4d0b4 --- /dev/null +++ b/debian/patches/upstream-sigbus-fix @@ -0,0 +1,37 @@ +From: Todd C. Miller +Subject: Bug#640304: sudo received signal SIGBUS, Bus error +Date: Fri, 16 Sep 2011 08:48:33 -0400 + + 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); + -- 2.47.2