From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 4841B21D58 for ; Thu, 21 Mar 2024 17:53:47 +0100 (CET) Received: (qmail 31850 invoked by uid 550); 21 Mar 2024 16:49:11 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 31818 invoked from network); 21 Mar 2024 16:49:11 -0000 Date: Thu, 21 Mar 2024 16:41:58 +0000 (UTC) From: Thorsten Glaser X-X-Sender: tg@herc.mirbsd.org To: musl@lists.openwall.com In-Reply-To: <20240321115806.511a81cc@inria.fr> Message-ID: References: <20240318213441.GH4163@brightrain.aerifal.cx> <627epdel4gidvu46u5ua2mclieqy3wwqbs7sxjgtgrsmkvn4up@ehu5ru6micnr> <20240319131833.GI4163@brightrain.aerifal.cx> <20240319154222.GK4163@brightrain.aerifal.cx> <20240319160832.GL4163@brightrain.aerifal.cx> <20240319173930.57b8eb30@inria.fr> <20240321115806.511a81cc@inria.fr> Content-Language: de-Zsym-DE-1901-u-em-text-rg-denw-tz-utc, en-Zsym-GB-u-cu-eur-em-text-fw-mon-hc-h23-ms-metric-mu-celsius-rg-denw-tz-utc-va-posix MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Subject: Re: [musl] Potential bug in __res_msend_rc() wrt to union initialization. J=E2=82=91=E2=82=99=E2=82=9B Gustedt dixit: >As soon as you store >to any member, padding bytes may change to arbitrary values. Yes, but where is that a problem? Something like: union foo { =09struct bar { =09=09char *s; =09=09size_t z; =09} a; =09struct baz { =09=09size_t z; =09=09char *s; =09} b; }; int somefunc(int mode, char *buf, size_t len, =E2=80=A6) { =09union foo u; =09memset(u, '\0', sizeof(u)); =09/* =E2=80=A6 */ =09if (mode) { =09=09/* from here on, u is decided to be a */ =09=09u.a.s =3D NULL; =09} else { =09=09/* from here on, u is decided to be b */ =09=09u.b.s =3D NULL; =09} =09/* =E2=80=A6 some other processing =E2=80=A6 */ =09if (mode) { =09=09u.a.s =3D buf; =09=09u.a.z =3D len; =09} else { =09=09u.b.s =3D buf; =09=09u.b.z =3D len; =09} =09return (someotherfunc(&u, mode, =E2=80=A6)); }