From patchwork Thu Nov 30 11:24:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ludwig Rydberg X-Patchwork-Id: 81025 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B4C3F385B530 for ; Thu, 30 Nov 2023 11:24:48 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from smtp-out3.simply.com (smtp-out3.simply.com [94.231.106.210]) by sourceware.org (Postfix) with ESMTPS id E461E3858C60 for ; Thu, 30 Nov 2023 11:24:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E461E3858C60 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gaisler.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gaisler.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E461E3858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=94.231.106.210 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701343475; cv=none; b=jLv9bfuO5brPsu8evx0d2Mx3T1VrvfzeTiKpYMA9PPjeg4bwLpRKRH6h5mXFhLh7TNfayrzGni3nzO3drtSp3hOdY68jHJlbgAIiLIFIw8/YpVxIYD/YUas/a8B9ybzBtWk60ydVoln7hKrjdLz93dhliNktuRCuv2i/VDaSn34= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701343475; c=relaxed/simple; bh=ay3PYcOGP1zkPAGkPNXGnaTl6XjZaIZ9P13fGglRRY0=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=u4fC8+asQSnQ1ZD4U3oFu4N4ToxT3xKLazGoIf3vD4gJckmc9ln9pudrYw3VIJckRkCyVPD7hBSxw3QFYdqbo0qr/5JregxvZKKvD8ZEZIwDH/rEfzSC1hVeUSjIaFvXaDEaVNYF5ksvELhLjJ+qP6rEm1VwcrZKiscYwYS7n2U= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost (localhost [127.0.0.1]) by smtp.simply.com (Simply.com) with ESMTP id 4Sgv3g70L1z67qJ; Thu, 30 Nov 2023 12:24:31 +0100 (CET) Received: from ludwig.got.gaisler.com (h-98-128-223-123.NA.cust.bahnhof.se [98.128.223.123]) by smtp.simply.com (Simply.com) with ESMTPA id 4Sgv3g4fx0z681p; Thu, 30 Nov 2023 12:24:31 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gaisler.com; s=unoeuro; t=1701343471; bh=c7z908H+f56+5uT/L4CgS1Z5E4UHBgjRKJKR3tUXX0Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=cbOk+4uOUtulEWQUwrFrd6OI3ETotO03H/7jI6oSsmQc6ULd9DJRqT38MbAO6+s+8 oRv88DW8TTB0c95K1JVluEBrGlxAf9nMygZcj/4ubl+25g9kV3aqlT16aL3WP2cQLC pn2FiVYVSgXsy4G7//q9TbrVCH5qzceo7x/hbgT0= From: Ludwig Rydberg To: libc-alpha@sourceware.org Cc: adhemerval.zanella@linaro.org, software@gaisler.com, andreas@gaisler.com Subject: [RFC] resolv: Align buf before second query for A_AAA in __res_context_query Date: Thu, 30 Nov 2023 12:24:30 +0100 Message-Id: <20231130112430.23815-2-ludwig.rydberg@gaisler.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231130112430.23815-1-ludwig.rydberg@gaisler.com> References: <20231130112430.23815-1-ludwig.rydberg@gaisler.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_INVALID, DKIM_SIGNED, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Re-introduces alignment handling that was removed by patch 40c0add7d487 ("resolve: Remove __res_context_query alloca usage") Verfied by successfully running the resolv test suite on sparc32. Signed-off-by: Ludwig Rydberg --- resolv/res_query.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/resolv/res_query.c b/resolv/res_query.c index 1b148a2a05b8..d065814b38e8 100644 --- a/resolv/res_query.c +++ b/resolv/res_query.c @@ -147,9 +147,19 @@ __res_context_query (struct resolv_context *ctx, const char *name, } nquery1 = n; - query2 = buf.data + n; + /* Align the buffer. */ + int npad = ((nquery1 + __alignof__ (HEADER) - 1) + & ~(__alignof__ (HEADER) - 1)) - nquery1; + if (n > buf.length - npad) + { + n = -1; + goto unspec_nomem; + } + + int nused = n + npad; + query2 = buf.data + nused; n = __res_context_mkquery (ctx, QUERY, name, class, T_AAAA, - NULL, query2, buf.length - n); + NULL, query2, buf.length - nused); if (n > 0 && (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0) /* Use RESOLV_EDNS_BUFFER_SIZE because the receive