diff --git a/SOURCES/oddjob-0.31.5-check.patch b/SOURCES/oddjob-0.31.5-check.patch
new file mode 100644
index 0000000..1e5527b
--- /dev/null
+++ b/SOURCES/oddjob-0.31.5-check.patch
@@ -0,0 +1,30 @@
+commit 1ba387876f865e0d24535418127a487edecccc09
+Author: Nalin Dahyabhai <nalin@dahyabhai.net>
+Date:   Mon May 19 15:43:17 2014 -0400
+
+    Call getpwnam_r() correctly
+    
+    The getpwnam_r() function returns an error directly, and is not
+    guaranteed to set errno to the same value.  We previously checked errno
+    rather than the result code directly, so fix that.
+
+diff --git a/src/pam_oddjob_mkhomedir.c b/src/pam_oddjob_mkhomedir.c
+index 1a7a27d..8836434 100644
+--- a/src/pam_oddjob_mkhomedir.c
++++ b/src/pam_oddjob_mkhomedir.c
+@@ -100,13 +100,13 @@ send_pam_oddjob_mkhomedir_request(pam_handle_t *pamh)
+ 				pw = NULL;
+ 				free(buf);
+ 				buf = NULL;
+-				if (errno == ERANGE) {
++				if (ret == ERANGE) {
+ 					bufsize += 4;
+ 				} else {
+ 					break;
+ 				}
+ 			}
+-		} while ((ret != 0) && (errno == ERANGE));
++		} while (ret == ERANGE);
+ 		if ((pw != NULL) &&
+ 		    (stat(pw->pw_dir, &st) == -1) && (errno == ENOENT)) {
+ 			/* If we're running with the user's privileges, then
diff --git a/SOURCES/oddjob-0.31.5-noumask.patch b/SOURCES/oddjob-0.31.5-noumask.patch
new file mode 100644
index 0000000..1fe9d4a
--- /dev/null
+++ b/SOURCES/oddjob-0.31.5-noumask.patch
@@ -0,0 +1,32 @@
+Dropped the .spec hunk.
+
+commit 3829b09801daf6af964431db9d3d025f0aff4361
+Author: Nalin Dahyabhai <nalin@dahyabhai.net>
+Date:   Tue Apr 22 11:01:16 2014 -0400
+
+    Stop explicitly setting a umask for mkhomedir
+    
+    - stop overriding the system-wide UMASK default in our default
+      oddjobd-mkhomedir.conf file (#995097)
+
+diff --git a/src/oddjobd-mkhomedir.conf.in b/src/oddjobd-mkhomedir.conf.in
+index b16c7a6..db8bf4e 100644
+--- a/src/oddjobd-mkhomedir.conf.in
++++ b/src/oddjobd-mkhomedir.conf.in
+@@ -25,14 +25,14 @@
+       <interface name="@NAMESPACE@.oddjob_mkhomedir">
+ 
+         <method name="mkmyhomedir">
+-          <helper exec="@mypkglibexecdir@/mkhomedir -u 0002"
++          <helper exec="@mypkglibexecdir@/mkhomedir"
+                   arguments="0"
+                   prepend_user_name="yes"/>
+           <!-- no acl entries -> not allowed for anyone -->
+         </method>
+ 
+         <method name="mkhomedirfor">
+-          <helper exec="@mypkglibexecdir@/mkhomedir -u 0002"
++          <helper exec="@mypkglibexecdir@/mkhomedir"
+                   arguments="1"/>
+           <allow user="root"/>
+         </method>
diff --git a/SOURCES/oddjob-0.31.5-pamdoc.patch b/SOURCES/oddjob-0.31.5-pamdoc.patch
new file mode 100644
index 0000000..7c583fb
--- /dev/null
+++ b/SOURCES/oddjob-0.31.5-pamdoc.patch
@@ -0,0 +1,22 @@
+commit 71f0e7828edc9f7c7f81e87c7f9586ebfab9aec7
+Author: Nalin Dahyabhai <nalin@redhat.com>
+Date:   Tue Sep 9 15:30:19 2014 -0400
+
+    Note that the PAM module takes no options
+
+diff --git a/src/pam_oddjob_mkhomedir.8.in b/src/pam_oddjob_mkhomedir.8.in
+index 1d6b7ff..3793764 100644
+--- a/src/pam_oddjob_mkhomedir.8.in
++++ b/src/pam_oddjob_mkhomedir.8.in
+@@ -27,6 +27,11 @@ If \fIoddjobd\fR has not been configured to provide these methods, or the
+ user is not authorized to use them, then \fIoddjobd\fR will ignore the
+ module's requests.
+ 
++.SH OPTIONS
++The module takes no options.  What \fIoddjobd\fR does in response to the
++module's request is controlled by the daemon's configuration file, typically
++\fI@mysysconfdir@/oddjobd.conf.d/oddjobd-mkhomedir.conf\fR.
++
+ .SH SEE ALSO
+ \fBoddjob_request\fR(1)
+ \fBoddjob.conf\fR(5)
diff --git a/SPECS/oddjob.spec b/SPECS/oddjob.spec
index c28cde6..ae10adf 100644
--- a/SPECS/oddjob.spec
+++ b/SPECS/oddjob.spec
@@ -17,9 +17,12 @@
 
 Name: oddjob
 Version: 0.31.5
-Release: 3%{?dist}
+Release: 4%{?dist}
 Source0: http://fedorahosted.org/released/oddjob/oddjob-%{version}.tar.gz
 Source1: http://fedorahosted.org/released/oddjob/oddjob-%{version}.tar.gz.sig
+Patch0: oddjob-0.31.5-check.patch
+Patch1: oddjob-0.31.5-pamdoc.patch
+Patch2: oddjob-0.31.5-noumask.patch
 Summary: A D-Bus service which runs odd jobs on behalf of client applications
 License: BSD
 Group: System Environment/Daemons
@@ -84,6 +87,9 @@ This package contains a trivial sample oddjob service.
 
 %prep
 %setup -q
+%patch0 -p1 -b .check
+%patch1 -p1 -b .pamdoc
+%patch2 -p1 -b .noumask
 
 %build
 sample_flag=
@@ -131,7 +137,7 @@ install -m755 sample/oddjob-sample.sh		sample-install-root/sample/%{_libdir}/%{n
 chmod -x src/reload src/mkhomedirfor src/mkmyhomedir
 
 # Make sure the datestamps match in multilib pairs.
-touch -r src/oddjobd-mkhomedir.conf.in	$RPM_BUILD_ROOT/%{_sysconfdir}/oddjobd.conf.d/oddjobd-mkhomedir.conf
+touch -r src/oddjob-mkhomedir.conf.in	$RPM_BUILD_ROOT/%{_sysconfdir}/oddjobd.conf.d/oddjobd-mkhomedir.conf
 touch -r src/oddjob-mkhomedir.conf.in	$RPM_BUILD_ROOT/%{_sysconfdir}/dbus-1/system.d/oddjob-mkhomedir.conf
 
 %clean
@@ -249,6 +255,15 @@ fi
 exit 0
 
 %changelog
+* Tue Sep  9 2014 Nalin Dahyabhai <nalin@redhat.com> - 0.31.5-4
+- correctly check the error returned from getpwnam_r(), so that we don't
+  miss an ERANGE error (#1098616, part of #1108398)
+- add a note to pam_oddjob_mkhomedir's manual pointing to where the
+  configuration would actually go (part of #1108398)
+- stop overriding the system-wide UMASK default in our default
+  oddjobd-mkhomedir.conf file (#995097,#1123860), and stop using its
+  proprocessor-input file as a reference, since we're patching it now
+
 * Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 0.31.5-3
 - Mass rebuild 2014-01-24