From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=DKIM_ADSP_ALL, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25550 invoked from network); 3 Aug 2020 15:12:11 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 3 Aug 2020 15:12:11 -0000 Received: (qmail 30464 invoked by uid 550); 3 Aug 2020 15:12:06 -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 30437 invoked from network); 3 Aug 2020 15:12:06 -0000 Date: Mon, 3 Aug 2020 17:11:50 +0200 From: Wolf To: musl@lists.openwall.com Cc: Ariadne Conill Message-ID: <20200803151150.wv4zbj7jkwjdfsvp@wolfsden.cz> References: <20200802225426.32002-1-ariadne@dereferenced.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="3dupknzkxroqh5tl" Content-Disposition: inline In-Reply-To: <20200802225426.32002-1-ariadne@dereferenced.org> Subject: Re: [musl] [PATCH v4] implement recallocarray(3) --3dupknzkxroqh5tl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2020-08-02 16:54:26 -0600, Ariadne Conill wrote: > +void *recallocarray(void *ptr, size_t om, size_t m, size_t n) > +{ > + void *newptr; > + size_t old_size, new_size; > + > + if (n && m > -1 / n) { > + errno =3D ENOMEM; > + return 0; > + } > + new_size =3D m * n; > + > + if (n && om > -1 / n) { > + errno =3D EINVAL; > + return 0; > + } > + old_size =3D om * n; > + > + newptr =3D calloc(m, n); > + if (!newptr) > + return ptr; =46rom reading openbsd's source I would say this should return 0 (or newptr), not ptr. Otherwise I'm not sure how the caller could tell if the resize failed or not. > + > + if (new_size <=3D old_size) { > + memcpy((char *) newptr, ptr, new_size); > + } > + else { > + memcpy((char *) newptr, ptr, old_size); > + memset((char *) newptr + old_size, 0, new_size - old_size); > + } > + > + memset(ptr, 0, old_size); > + free(ptr); > + > + return newptr; > +} W. --=20 There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors. --3dupknzkxroqh5tl Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE7BIrb0FxyZaks1p7hTP5S2N55TgFAl8oKTYACgkQhTP5S2N5 5TjnWhAAwebN7zAuVTQ01pasSXD7xNYzorjBJuIjtCSCjt0YELwsusheeezTXkNP crdcI604Ew7t7fJbNzDdD3t7i+RreV8vG7fy5VOJZc1cnRgDRwAjSTWJY0lIAV/G wV20MC9mPRjYskJUX9W1iB794aR43ynvP8eqGABFmtuZ7roGaR1MZ2bU4zIQgFgv AezAN55Xyul/epEj13nEdq3l/oFB4L5mmDl/BhlA78ZZW1bwrxenS2O8TpwxyFlr 3N6t6fSAJprvZInu2py7EibrCewdczH4SX/3lQRBOxtQ486vbjY86OooSLSNlbqC flzTvDdgb9toGtLonikHTBYnesr39EnAxIgWIRQjfVX17gd5NOBcAIMeauit8565 pXyH5dBSXPn/ceLamUlom9Ug/TKrWDlr5fwT/Lkvs1rzJN1nOR6U71H2YnnVbjxV AAHQlrKzHb2HkHIdc+olXBziiUMuX8OWAQuQMpvq64NdRJwD3BG32j5BiB6z1pwP p64svu/K/V4zhDT8swHevbo6ygoo3VlFyS4d0Ct2ZdddH/qtjsyCogLo7Fs0kaK3 ZijOBlYW0FxH/zLz15KJaqTEiP9dbKa0OLcdZcIdccLHUhYxUIZvFnnQ3ancqDU/ +3LUBLjpF1B0jOJkBU47gV2YINNJ9iblSeqSkD/yyiaI3Y94EHU= =Rxch -----END PGP SIGNATURE----- --3dupknzkxroqh5tl--