cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1183533.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1207995.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1209375.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1217186.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch
--- /dev/null
+#
+# Author: Carlos O'Donell
+# Upstream status: Needs to go upstream (2015-05-07)
+#
+diff --git a/inet/rcmd.c b/inet/rcmd.c
+index acacaa0..9f2443b 100644
+--- a/inet/rcmd.c
++++ b/inet/rcmd.c
+@@ -803,29 +803,38 @@ __validuser2_sa(hostf, ra, ralen, luser, ruser, rhost)
+ *p = '\0'; /* <nul> terminate username (+host?) */
+
+ /* buf -> host(?) ; user -> username(?) */
++ if (*buf == '\0')
++ break;
++ if (*user == '\0')
++ user = luser;
++
++ /* First check the user part. This is an optimization, since
++ one should always check the host first in order to detect
++ negative host checks (which we check for later). */
++ ucheck = __icheckuser (user, ruser);
++
++ /* Either we found the user, or we didn't and this is a
++ negative host check. We must do the negative host lookup
++ in order to preserve the semantics of stopping on this line
++ before processing others. */
++ if (ucheck != 0 || *buf == '-') {
++
++ /* Next check host part */
++ hcheck = __checkhost_sa (ra, ralen, buf, rhost);
++
++ /* Negative '-host user(?)' match? */
++ if (hcheck < 0)
++ break;
+
+- /* First check host part */
+- hcheck = __checkhost_sa (ra, ralen, buf, rhost);
+-
+- if (hcheck < 0)
+- break;
+-
+- if (hcheck) {
+- /* Then check user part */
+- if (! (*user))
+- user = luser;
+-
+- ucheck = __icheckuser (user, ruser);
+-
+- /* Positive 'host user' match? */
+- if (ucheck > 0) {
++ /* Positive 'host user' match? */
++ if (hcheck > 0 && ucheck > 0) {
+ retval = 0;
+ break;
+ }
+
+- /* Negative 'host -user' match? */
+- if (ucheck < 0)
+- break;
++ /* Negative 'host -user' match? */
++ if (hcheck > 0 && ucheck < 0)
++ break;
+
+ /* Neither, go on looking for match */
+ }