From e794ddb00b4d9e0335efd3d0d69ca8648019451f204224bdd1331a5d505fba78 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 7 Jul 2016 12:43:40 +0000 Subject: [PATCH] Accepting request 407107 from home:Andreas_Schwab:Factory - strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for stncat on i586 (BZ #20260) - Update glibc.keyring - Unset MALLOC_CHECK_ during testsuite run - nsswitch.conf: Add fallback to files for passwd and group to prepare for libnsl removal. - nis-initgroups-status.patch: Return proper status from _nss_nis_initgroups_dyn (bsc#984269, BZ #20262) - robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to check for timeout (bsc#985170, BZ #20263) OBS-URL: https://build.opensuse.org/request/show/407107 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=442 --- glibc-testsuite.changes | 22 ++++ glibc-testsuite.spec | 13 +- glibc-utils.changes | 22 ++++ glibc-utils.spec | 13 +- glibc.changes | 22 ++++ glibc.keyring | Bin 9425 -> 31153 bytes glibc.spec | 13 +- nis-initgroups-status.patch | 53 ++++++++ nsswitch.conf | 4 +- robust-mutex-deadlock.patch | 152 +++++++++++++++++++++++ strncat-avoid-array-bounds-warning.patch | 31 +++++ 11 files changed, 340 insertions(+), 5 deletions(-) create mode 100644 nis-initgroups-status.patch create mode 100644 robust-mutex-deadlock.patch create mode 100644 strncat-avoid-array-bounds-warning.patch diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes index 8fad9b6..2ff2ee7 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de + +- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for + stncat on i586 (BZ #20260) +- Update glibc.keyring +- Unset MALLOC_CHECK_ during testsuite run + +------------------------------------------------------------------- +Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de + +- nsswitch.conf: Add fallback to files for passwd and group to prepare for + libnsl removal. + +------------------------------------------------------------------- +Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de + +- nis-initgroups-status.patch: Return proper status from + _nss_nis_initgroups_dyn (bsc#984269, BZ #20262) +- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to + check for timeout (bsc#985170, BZ #20263) + ------------------------------------------------------------------- Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec index b491508..fd0c742 100644 --- a/glibc-testsuite.spec +++ b/glibc-testsuite.spec @@ -120,7 +120,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz %if !%{build_snapshot} Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig %endif -Source2: glibc.keyring +Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 Source5: nsswitch.conf @@ -310,6 +310,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch Patch1056: clntudp-call-alloca.patch # PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755) Patch1057: nscd-gc-crash.patch +# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262) +Patch1058: nis-initgroups-status.patch +# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263) +Patch1059: robust-mutex-deadlock.patch +# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260) +Patch1060: strncat-avoid-array-bounds-warning.patch ### # Patches awaiting upstream approval @@ -590,6 +596,9 @@ rm nscd/s-stamp %patch1055 -p1 %patch1056 -p1 %patch1057 -p1 +%patch1058 -p1 +%patch1059 -p1 +%patch1060 -p1 %patch2000 -p1 %patch2001 -p1 @@ -857,6 +866,8 @@ popd export SUSE_ASNEEDED=0 # Increase timeout export TIMEOUTFACTOR=16 +# The testsuite does its own malloc checking +unset MALLOC_CHECK_ make -C cc-base -k check || { cd cc-base o=$- diff --git a/glibc-utils.changes b/glibc-utils.changes index 8fad9b6..2ff2ee7 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de + +- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for + stncat on i586 (BZ #20260) +- Update glibc.keyring +- Unset MALLOC_CHECK_ during testsuite run + +------------------------------------------------------------------- +Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de + +- nsswitch.conf: Add fallback to files for passwd and group to prepare for + libnsl removal. + +------------------------------------------------------------------- +Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de + +- nis-initgroups-status.patch: Return proper status from + _nss_nis_initgroups_dyn (bsc#984269, BZ #20262) +- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to + check for timeout (bsc#985170, BZ #20263) + ------------------------------------------------------------------- Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de diff --git a/glibc-utils.spec b/glibc-utils.spec index bdfd810..1412c89 100644 --- a/glibc-utils.spec +++ b/glibc-utils.spec @@ -119,7 +119,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz %if !%{build_snapshot} Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig %endif -Source2: glibc.keyring +Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 Source5: nsswitch.conf @@ -309,6 +309,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch Patch1056: clntudp-call-alloca.patch # PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755) Patch1057: nscd-gc-crash.patch +# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262) +Patch1058: nis-initgroups-status.patch +# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263) +Patch1059: robust-mutex-deadlock.patch +# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260) +Patch1060: strncat-avoid-array-bounds-warning.patch ### # Patches awaiting upstream approval @@ -590,6 +596,9 @@ rm nscd/s-stamp %patch1055 -p1 %patch1056 -p1 %patch1057 -p1 +%patch1058 -p1 +%patch1059 -p1 +%patch1060 -p1 %patch2000 -p1 %patch2001 -p1 @@ -857,6 +866,8 @@ popd export SUSE_ASNEEDED=0 # Increase timeout export TIMEOUTFACTOR=16 +# The testsuite does its own malloc checking +unset MALLOC_CHECK_ make -C cc-base -k check || { cd cc-base o=$- diff --git a/glibc.changes b/glibc.changes index 8fad9b6..2ff2ee7 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de + +- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for + stncat on i586 (BZ #20260) +- Update glibc.keyring +- Unset MALLOC_CHECK_ during testsuite run + +------------------------------------------------------------------- +Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de + +- nsswitch.conf: Add fallback to files for passwd and group to prepare for + libnsl removal. + +------------------------------------------------------------------- +Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de + +- nis-initgroups-status.patch: Return proper status from + _nss_nis_initgroups_dyn (bsc#984269, BZ #20262) +- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to + check for timeout (bsc#985170, BZ #20263) + ------------------------------------------------------------------- Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de diff --git a/glibc.keyring b/glibc.keyring index 4de855c27a150de0cc37c29b2f9b4577f4c0bc9e97f48b3b573847b3caacce56..e070aa84aee0a70c7e718dca3ed735dd6edd77fb8864f1bda0ea9cd6a1bd9522 100644 GIT binary patch literal 31153 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 literal 9425 zcmaKS$Fi&1l5L-_IDO&I(OlCd7ZS`jgXs{q|o#P%djbjsNE_Y5ZE!UmFSlgDse> z@F-@{XE}yX5}2w+k*lJWc=ipoB$y3?F$pc60TPKNZJfzyJIN5BOfOW%1M^E@(7=>? z9+8euaZp!axHWS$Gnk-ys-UJHffHO`52*pI*>QJ}tk1~Db>EVXpak-s`G99FcRh>a zgz}#9F|6|n?U^T8!qj2BIPwfW@P{`w|FGbt{-it=mc@b8#2WZOhvo9ptXu8jE4p`q zpeGrwj7)C1=czNt{>6}7*f88YsE0Y>!)t?dHW{~5|2~a|0^HmqPyV@9q*UW^4U1ai z+78WZu5FuNj~6aJO0@`qa05Y!>UM^*%W0| zCWH?(z9uMxI*efjmSH4V^UWq7jx9e~ONE^+8-f+cIEIQ*@ysOpvSky`F{jVMrpaWd zPdI$bha7B$SP)o&W0+WEdPZqBh2iSXMzkDVD`4s8W4lUX8D313uh`cG#Z0#HET{htWx$_e#vglE<~=cL^Qkh#>Ft8uvy ztfD5KUXw&M-bTfc16PrR)x|JlTdDWA3yV@nITVYiT_vrL%G6){-vG+LLpY5efCpWG zfQJl69Fy}*Z3j$U^DG;4%r0kq`&ficHGk0qZO|+7otHN=3;2^9Yk=?VgkIUS6OWVj`3&Y)5V^%qI&C@G@0H1La$4=c1T{bur(t zFB~C`ujoIAv*&DLOgthS!XT>7OFB9E(jpe#(v3(`3Wy})o5(oH2Yx$V^B4t)EN1@Z zMy!KM_PdEIG@d178EO-YJJ#B5kFga-vz1KQeHGxsn5~&u=j>W$c0~|vMPYV3Wa|4^ zo5%esnfqw1xRx=d>F%bQRDp{&t}|DyTOgo24H;tAbf~<8Em4Xq->;WRZ*!32N!*Tv zRwz1$KODmqFQRI~&rO2QJ&ID9q?@1s*vOuot&sg7<=><>o|rJKwUb6ix?ga})|1Am zCrH9QYsIK5`wcz5@q$0!2;0H@3qa2OVw$M`s&#X=HQXmsnjrJR*XR|A$HqL_OT^pE zG&7}c8E;$;s@6n$T05;Ig%Ma7NB^vJs=^86*+)%?hrU6QHu}24&fSc9{Lm6Dfowx` ztZ%y-ZOOA%WqEySy=(^ncE_NChLpMgGx;Lql};Mbg9=HM!MYrTpNwxpG5s!$GE^^6 zmJ(&-8NaCj?m9xy0SP@k|627r_TG6Pis1A-Da578u7q{re^S`ZU{iq7XL@$EC7BzL zNc1-ekJXmdJN%|8IQ*5N@EcYLElWdqW7nPmyDPeJ=tyw0Dn;caCh!>7m9r#w(-AnKpb$4qH^^rh_%AsRaoAy zsAd?AbC@0=_nFVQS%VN|W+6CS6}T(xDtc8JwTZ{RNin0M@BznEzmQZ~&o4~o*ED0d z;A)==0C%S7>aWAG)oPdPiJZ)~CBrGz<1KXH4L5Z9)#WH}b-o}zajV(}{?r1uw!F_< zuK{Jg)Jqo$@7g}BPcLkE)i{`V78`x&R8icR?TunFl9#?FL=mPJ-p{X`bPX*E-24I1 zb=SDDu5?B97M7WTG9fDu@dCwNd5rNw^K$Zh@C=A{^>;UAOeoO|IUPvx7m0c!0F8xY zpSBPxKmCoZbI#;Pf1yY_kTNukzn8BKBoF%8Bj8R=aIe-k!X~pGMrR9R(*c2o=w+%A zLlS)ayL8$wyl}9HG1m0WgolAGi1*=HK91Bi!;IQH3n4@CK9lylC5jEmhjmu?og#9`U^FLwP2vO)+~qj+lHzXKDy z3^*;yWCbY@9?OT97tljph%lBmU_{}>%#oBIXqi6Y;T{ z1OP6*V*#dRbL%|(lCie%iLKviM89OaEyITCs{olP#?m}F8#CN@ag|LU?`9gBxsZVu zzP5s)_HG>PLtjG_u@U8EvpY|ZsL#!P@nzl*&8+)L7lvevJDz5dk)6O)yUOnYa8TLu zviC8DUq`hI!Yv#a?p9+R-7-bYNv9!lc7G?1k+?f1b~iYd^*N3)eiIDvC&T;~!4x-t zauKRm;zzR^=NEv*@vi9*a zX4o?1U->gX%kxWHx;50#*BF;W^+85M1g1X3cO!q(9-ZQ7AX$ptzOUO7T0X`>0+=t)HIgBu?k4#a2bs!^iPk-aw|val77|fTM= z>@W(HA?Tl!e7z7pP&xaNQ!{S?u~iHGH%mp829XVOah@xg3uVfbR72zO9=CE4P_W;8 zjqF_R^3%~Uw`cPfLT{Mz0H7j^K=qMl-(gv{GOSm$gWTrOlAX zawNgL)(@}#C&2)JGRz+YQ)TFnD$fM=lY}^&VaoR=osTs&63a5qufZby8Z4ZWp}#xN zTrks~!7m;6IR9%p?M%`QV6#r5 zpSLU;hsT_7k3VEFqyosDggvxPmMryXF%*u9YB4K#>fm8V$)Pa($R7FqN`f#s73#Ll z^!So&L-mp$`(y-QctV};Mx|5X>>AlbAzH~7(hH#6Oe=q;mb0%0My7^o@Qu=HG7kwK zylRfG$B-}xko6d7?c)c1M)nx%#pNOUv5suIxLFz7{SxlqXWlh@k3j8%Ik4b`b(2U7 z#tGJ=ECS?;alS3r$DXJ}y_B|qsrFO-xRSHxCj~mvA#2Xt`FLMlm|PAjz_fgR?p+hL z&bVEHqlPyxG0Xm)>|;hyOj-u@yLb;o(w#xO(KT(Tu*$YOjU=C)MyVDJ3cl>=4BS`OOt&s(esr;Vk24QdSiJtx$Nya(1OG35{O3H#T=-Vl zuU8{D*ta9pq`VaS^mia(b8Z+Nv%zX#1}m}u7JA!&i&dX*NJ+FyMv9wUIFB#X3f#}k z^0Kp8BUG_$+(t2=n@vx}ubPa*=RV;&n|XCsdxB=Guhgs|kh3P^;^N)71#DbtCYC7= z2hy#GoxVI_1IMe424SM=OrWRNZr_TWWM{Wqrs*@>dtmpC!_Nb!4mV$G8-!kHVfeZg zXp;S5J@8(>1FwU7&etI=LS^qkd?7>3+3WeB*p6Zgq(GC63&(U5EyZKACzbZBW_{-u z_$XKv0|;Y7EZN1x&TUTqeA1uClo!X4B9<zx4n0&&KM1+PK7z!nt7)CWvBpC`Y##QxGpHIkmQv>v{`XzeV7a*C|4RN?Nq&)UM> zjRN$76;HAZ$=;4nm+Ra%X*=i~6?MI?nZ_`pMN-VWu3PWSWBgePiog$#vxV&=v%vQ0 z)aSgXM2?%B$Wnt3JN`47T%|!W;{h8Y%W}ziiZ%bO&wVqc5K(ZdZd_p}o%aFMZ1s}A zlc9Hx_M}^O|JA^+%tq$?Rh0U1TL;g_C(IcWrX#ED#tBqK?v0}&b9bs@0mw=4G_>S-)D)4a$>zv8jrY>Hk}!q4 z$q*286!fo?eNMS!5wkodWcGfq)i&zX_2N+y1w#k7OYyI0V>cOS(dEsx}m`v);?5O2tYF$%e z{Dw@a;9rrj_ZO@-n1)E|C9A+tpx3eT0iw@P_HYAOdt>Nl{&XbakXmcrn`U#IRTzc6 zQ1s^^m+w3@J!?>4-lPu&P;7=_Y@68z1QsSgxu%pDoV{3KI2n$*V=R^{T!v^ajGNcx z^q)}z1s^++zAEBa8qi#LT*S@hmoJ$|tt;SD&Hbtj^|axlJi+IhL(}EXdLO%PLp8;m zIrkXbWYC3^K5zi28Cm`mVV9_ictTK*CC1y5v96CgjcpJQj@?$oVB||ruWoN^mB6sh zZOnD_evf+$xM$v~i0ql6b01@NZOP`Gpm#!NWH&m;{nJ_Q0Q9pQdCCr=} z0b|cU*>Ab}-z>jZCsVQidlKs%x1Ol8zt5B}ZLWq}ig|4v+r-9qPt5|5`lfm&mpOfJ zHG;Hb5P2=?3KpV#wogdT>qrZhGbI0T{9b+JANg+pASRHt?PBkf&kbSUAtZs%7Gc-0 zLXIYDd@hs_dAK%>J2RQ81I8cMPI*w0D2sTa6p$R@t)c1Tp9q6HFUD_#1LVC){U4RZuEfQ2Iln{<(qx_t~;z3_WJxA&ZWj+S}mX^H`BI zQ+X2Io`xsBgc^A4}sg-d``9Yq|}L-jI~EsmVU0rO;Hk&f?J{aJh)`l`9A=l>E{#zI}ddN z_5)*Ezjp}fJY4)E_tLPRg9IlA6G{m<)AUfdb@OZ$yoBQ<_mPezHjlW1#0T_QdSmq|KJ>BMXiJfgf(ocxV$!9@{ zkM|c5(ta@i=!L6q{U6y2ETN%$ZzRMc_wmbe-@sCdDAT%&sW{3HcszS&CkB4nm0PQi zbQKpBUc9yT$yts@m$%GAq9Y5CKSJo+=%=0iu%NRSY36&Z{_4LYL&|ZFp%x=S<18;= zcZikf?4r3h%MsRL^(_hoZBp__Dv9ZvPUpH%O!((9_iZfvoB~Mtx3dHC$KwplyW1=^ zwww-X&~nv}qOI%>W#Ic#z$ETMQdm7ubiJPs`1=y}M1fO4Y`)?v^r$~Vc%L2h8zK6> zrl*1`A0nI{J6CD}>cirbV6VBe^RxoiW*h{bc(?*}w=*R?Ni!i(cgKxxk;vPp8?BP6i<^sIRYlCfqil>_q%++8*{-ehguNgi>*^l2l&&vH(deU;3U7>*$y6(vNm!^ zjrvR%uayHRYTZf@C;x%av9QPgobx#h?R3l{2USOK7gDK9BmDGfOfbB9)y|JwSft?cz@hN^d{IC#1NH3~pZ;#o@kJB-Q~zvE&_I0KgEg!gj_URf#ry_v z{=RGK1c)<#C=c)kb~TqUUFbT0-jk=pTm=zyY4+^$Ydpy(}hXgKIcop5Xo5Ztfw9NoGo?j-4slh0Nb^u}#A zF!uPFFD{Gfc0+!8;lBV#Zu$EZW>SS`=ee+hMango^DBt*>mt0>jT65350+o`og`a}w2vpTAfB5d_6#k9SH6YvkbX%acCuU3K8ov)O*4L6$$ercm$+E9r!yvl^x z=f>kUAf(}{EvUlX<{{MCWs_hhL|5E7Ir5=)zRj4{I2dZ|mQ+0B;FCPRa2B43oLkru z0iySs2;5ZrQor~pezNo~LhXRV?kS`L>sfD}GG9hps^Yf-6>rQtF3$??c}j3g-y6&P zR6X;;=l-ECIs=9bArke+-Q5vhmq<-Ak6uX3WQKu_Zt)dM@{3HQZAPd^#{!~lhys7lx^S8i zm1SMYH&NKKaL7`Lmv0->jyYL z(+MH06Shh67Mc2yFiz)?ZYt531ho;lyc#Q+tsnp^BQ9Td3Y? zXSnY!>=#7Y}fluXjxr3HFTD-I{!@RyG zc4h>r#4wp+4|_dx#nW~c#c-8tZlQvcQ*EOUj>iFV>jFC z-tYr(fhzB!8C0Bd^8Ii|>H@}7)9IFYS}H$`(BpA|)^veHl@j{ZMa3cB%KG+3D#bU3 zMpUw7)~_=tPrO;c7cZuOJqc6NVyOG(0(KYW!Ciba`0jXE%KAsTeVA&|XotG52Y)k? z^^68qlipJ(bLz_xZ$^^o<90O{11+Ae4k8m9L425@k6 zUZe6FWYMM(#p&nr5I|s!B27RP;11H7}o8RgQ<*ZP$SFz6TdD3kB6{V}Fr6<3$ wE`Z0<35V8JQx~Yd5z;fX5A`lcj#=WO{*V6v{$r%(2>AUtl3?=xpJ$c+FPEhGKmY&$ diff --git a/glibc.spec b/glibc.spec index f1e5cf0..b383069 100644 --- a/glibc.spec +++ b/glibc.spec @@ -120,7 +120,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz %if !%{build_snapshot} Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig %endif -Source2: glibc.keyring +Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 Source5: nsswitch.conf @@ -310,6 +310,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch Patch1056: clntudp-call-alloca.patch # PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755) Patch1057: nscd-gc-crash.patch +# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262) +Patch1058: nis-initgroups-status.patch +# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263) +Patch1059: robust-mutex-deadlock.patch +# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260) +Patch1060: strncat-avoid-array-bounds-warning.patch ### # Patches awaiting upstream approval @@ -590,6 +596,9 @@ rm nscd/s-stamp %patch1055 -p1 %patch1056 -p1 %patch1057 -p1 +%patch1058 -p1 +%patch1059 -p1 +%patch1060 -p1 %patch2000 -p1 %patch2001 -p1 @@ -857,6 +866,8 @@ popd export SUSE_ASNEEDED=0 # Increase timeout export TIMEOUTFACTOR=16 +# The testsuite does its own malloc checking +unset MALLOC_CHECK_ make -C cc-base -k check || { cd cc-base o=$- diff --git a/nis-initgroups-status.patch b/nis-initgroups-status.patch new file mode 100644 index 0000000..786c4e6 --- /dev/null +++ b/nis-initgroups-status.patch @@ -0,0 +1,53 @@ + [BZ #20262] + * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Return + NSS_STATUS_SUCCESS when done. Return NSS_STATUS_TRYAGAIN when out + of memory. + +Index: glibc-2.23/nis/nss_nis/nis-initgroups.c +=================================================================== +--- glibc-2.23.orig/nis/nss_nis/nis-initgroups.c ++++ glibc-2.23/nis/nss_nis/nis-initgroups.c +@@ -266,7 +266,7 @@ _nss_nis_initgroups_dyn (const char *use + + tmpbuf = __alloca (buflen); + +- do ++ while (1) + { + while ((status = + internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop, +@@ -275,8 +275,11 @@ _nss_nis_initgroups_dyn (const char *use + tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); + + if (status != NSS_STATUS_SUCCESS) +- goto done; +- ++ { ++ if (status == NSS_STATUS_NOTFOUND) ++ status = NSS_STATUS_SUCCESS; ++ goto done; ++ } + + g = &grpbuf; + if (g->gr_gid != group) +@@ -304,7 +307,11 @@ _nss_nis_initgroups_dyn (const char *use + + newgroups = realloc (groups, newsize * sizeof (*groups)); + if (newgroups == NULL) +- goto done; ++ { ++ status = NSS_STATUS_TRYAGAIN; ++ *errnop = errno; ++ goto done; ++ } + *groupsp = groups = newgroups; + *size = newsize; + } +@@ -316,7 +323,6 @@ _nss_nis_initgroups_dyn (const char *use + } + } + } +- while (status == NSS_STATUS_SUCCESS); + + done: + while (intern.start != NULL) diff --git a/nsswitch.conf b/nsswitch.conf index 9d628f0..fbd63fd 100644 --- a/nsswitch.conf +++ b/nsswitch.conf @@ -26,8 +26,8 @@ # shadow: files nis # group: files nis -passwd: compat -group: compat +passwd: compat [NOTFOUND=return] files +group: compat [NOTFOUND=return] files hosts: files dns networks: files dns diff --git a/robust-mutex-deadlock.patch b/robust-mutex-deadlock.patch new file mode 100644 index 0000000..a7edfc2 --- /dev/null +++ b/robust-mutex-deadlock.patch @@ -0,0 +1,152 @@ + [BZ #20263] + * nptl/lowlevelrobustlock.c (__lll_robust_timedlock_wait) + [__ASSUME_FUTEX_CLOCK_REALTIME]: Check for timeout from + lll_futex_timed_wait_bitset. + * nptl/tst-robust10.c: New test. + * nptl/Makefile (tests): Add tst-robust10. + +Index: glibc-2.23/nptl/Makefile +=================================================================== +--- glibc-2.23.orig/nptl/Makefile ++++ glibc-2.23/nptl/Makefile +@@ -288,7 +288,7 @@ tests = tst-typesizes \ + tst-initializers1 $(addprefix tst-initializers1-,\ + c89 gnu89 c99 gnu99 c11 gnu11) \ + tst-bad-schedattr \ +- tst-thread_local1 tst-mutex-errorcheck ++ tst-thread_local1 tst-mutex-errorcheck tst-robust10 + xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \ + tst-mutexpp1 tst-mutexpp6 tst-mutexpp10 + test-srcs = tst-oddstacklimit +Index: glibc-2.23/nptl/lowlevelrobustlock.c +=================================================================== +--- glibc-2.23.orig/nptl/lowlevelrobustlock.c ++++ glibc-2.23/nptl/lowlevelrobustlock.c +@@ -118,8 +118,10 @@ __lll_robust_timedlock_wait (int *futex, + || !defined lll_futex_timed_wait_bitset) + lll_futex_timed_wait (futex, newval, &rt, private); + #else +- lll_futex_timed_wait_bitset (futex, newval, abstime, +- FUTEX_CLOCK_REALTIME, private); ++ int err = lll_futex_timed_wait_bitset (futex, newval, abstime, ++ FUTEX_CLOCK_REALTIME, private); ++ if (err == -ETIMEDOUT) ++ return -err; + #endif + + try: +Index: glibc-2.23/nptl/tst-robust10.c +=================================================================== +--- /dev/null ++++ glibc-2.23/nptl/tst-robust10.c +@@ -0,0 +1,110 @@ ++/* Test that pthread_mutex_timedlock properly times out. ++ Copyright (C) 2016 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++pthread_mutex_t mutex; ++ ++static void * ++thr (void *arg) ++{ ++ struct timespec abstime; ++ clock_gettime (CLOCK_REALTIME, &abstime); ++ abstime.tv_sec += 1; ++ int ret = pthread_mutex_timedlock (&mutex, &abstime); ++ if (ret == 0) ++ { ++ puts ("mutex_timedlock didn't fail"); ++ exit (1); ++ } ++ if (ret != ETIMEDOUT) ++ { ++ printf ("mutex_timedlock failed: %s\n", strerror (ret)); ++ exit (1); ++ } ++ ++ return 0; ++} ++ ++static int ++do_test (void) ++{ ++ pthread_t pt; ++ pthread_mutexattr_t ma; ++ ++ if (pthread_mutexattr_init (&ma) != 0) ++ { ++ puts ("mutexattr_init failed"); ++ return 0; ++ } ++ if (pthread_mutexattr_setrobust_np (&ma, PTHREAD_MUTEX_ROBUST_NP) != 0) ++ { ++ puts ("mutexattr_setrobust failed"); ++ return 1; ++ } ++ if (pthread_mutex_init (&mutex, &ma)) ++ { ++ puts ("mutex_init failed"); ++ return 1; ++ } ++ ++ if (pthread_mutexattr_destroy (&ma)) ++ { ++ puts ("mutexattr_destroy failed"); ++ return 1; ++ } ++ ++ if (pthread_mutex_lock (&mutex)) ++ { ++ puts ("mutex_lock failed"); ++ return 1; ++ } ++ ++ if (pthread_create (&pt, NULL, thr, NULL)) ++ { ++ puts ("pthread_create failed"); ++ return 1; ++ } ++ ++ if (pthread_join (pt, NULL)) ++ { ++ puts ("pthread_join failed"); ++ return 1; ++ } ++ ++ if (pthread_mutex_unlock (&mutex)) ++ { ++ puts ("mutex_unlock failed"); ++ return 1; ++ } ++ ++ if (pthread_mutex_destroy (&mutex)) ++ { ++ puts ("mutex_destroy failed"); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" diff --git a/strncat-avoid-array-bounds-warning.patch b/strncat-avoid-array-bounds-warning.patch new file mode 100644 index 0000000..f196c34 --- /dev/null +++ b/strncat-avoid-array-bounds-warning.patch @@ -0,0 +1,31 @@ +Subject: [PATCH] Avoid array-bounds warning for strncat on i586 + + [BZ #20260] + * sysdeps/x86/bits/string.h (__strncat_g) [!__i686__]: Compute the + address before the beginning of the string as an integer to avoid + array-bounds warning. + +diff --git a/sysdeps/x86/bits/string.h b/sysdeps/x86/bits/string.h +index 8dfce05..805d33f 100644 +--- a/sysdeps/x86/bits/string.h ++++ b/sysdeps/x86/bits/string.h +@@ -1089,7 +1089,6 @@ __strncat_g (char *__dest, const char __src[], size_t __n) + : "g" (__n), "0" (0), "1" (__tmp), "2" (__src), "3" (0xffffffff) + : "memory", "cc"); + # else +- --__tmp; + __asm__ __volatile__ + ("1:\n\t" + "cmpb $0,1(%1)\n\t" +@@ -1108,7 +1107,7 @@ __strncat_g (char *__dest, const char __src[], size_t __n) + "3:\n\t" + "movb $0,(%1)" + : "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n) +- : "1" (__tmp), "2" (__src), "3" (__n) ++ : "1" ((unsigned long) __tmp - 1), "2" (__src), "3" (__n) + : "memory", "cc"); + #endif + return __dest; +-- +2.9.0 +