From patchwork Mon May 25 21:11:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Etienne Brateau X-Patchwork-Id: 135638 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 017FF4BA23F8 for ; Mon, 25 May 2026 21:30:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 017FF4BA23F8 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=c4Swec8U X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from hera.aquilenet.fr (hera.aquilenet.fr [185.233.100.1]) by sourceware.org (Postfix) with ESMTPS id D43024BA23E3 for ; Mon, 25 May 2026 21:29:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D43024BA23E3 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=aquilenet.fr ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D43024BA23E3 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=185.233.100.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779744579; cv=none; b=VWIiMR1iAmKca3TYWYCVkBYOShinkzViHRVumFYS1cBLFNxV62S0JhbxNVc/m7IvRu3Gyh31D7p2BtHh6O0iu91aYL1Y0kN7V7MHLFwnqZh9t92oO+APV6ByJY0rF7MxqNzctP8l6iR+s85XhIMQ2x/gOOgYbvrIAc9a/MNRlvA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779744579; c=relaxed/simple; bh=PjV5PCnZTRGRho1Pyb273Z9wWURIQtFsTUxTpYJKNeI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=t+5czQzsAxQKmZtSUfG0p/FXIF/D72J0jfRAylhgGP+o9kJ5aqc1bLRBHJRgkPrKuSgvo4cuaozflXUKPBxBw4rbQ2Ti9X3Hfdxx8S93Q6xtVGi6yTaWvwJKsAdCWLfu7GUeeTJztn5SMMeDlvbPrRB6b0lWdiKdVzMDIeI7LdA= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=c4Swec8U DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D43024BA23E3 Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id 83B593B0 for ; Mon, 25 May 2026 23:29:37 +0200 (CEST) Authentication-Results: hera.aquilenet.fr; none X-Virus-Scanned: Debian amavis at hera.aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavis, port 10024) with ESMTP id jcnFGRLBX7wK for ; Mon, 25 May 2026 23:29:36 +0200 (CEST) Received: from end (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr [83.192.199.48]) by hera.aquilenet.fr (Postfix) with ESMTPSA id 3FED4187 for ; Mon, 25 May 2026 23:29:36 +0200 (CEST) Received: from samy by end with local (Exim 4.99.2) (envelope-from ) id 1wRcrf-0000000Fa2U-1FdL for libc-alpha@sourceware.org; Mon, 25 May 2026 23:29:35 +0200 Resent-From: Samuel Thibault Resent-Date: Mon, 25 May 2026 23:29:35 +0200 Resent-Message-ID: Resent-To: libc-alpha@sourceware.org X-Spam-Language: Received: from mail.aquilenet.fr [2a0c:e300::1] by end.youpi.perso.aquilenet.fr with IMAP (fetchmail-6.6.3) for (single-drop); Mon, 25 May 2026 23:12:24 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id D5BC03AA for ; Mon, 25 May 2026 23:12:23 +0200 (CEST) X-Virus-Scanned: Debian amavis at hera.aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavis, port 10024) with ESMTP id bBZOeQhtq-43 for ; Mon, 25 May 2026 23:12:23 +0200 (CEST) Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138]) by hera.aquilenet.fr (Postfix) with ESMTPS id A70D0187 for ; Mon, 25 May 2026 23:12:22 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id 6A9E9A011C for ; Mon, 25 May 2026 23:12:22 +0200 (CEST) Received: from sonata.ens-lyon.org ([127.0.0.1]) by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id za4Oy2Y8Q288 for ; Mon, 25 May 2026 23:12:22 +0200 (CEST) X-policyd-weight: using cached result; rate:hard: -7 X-policyd-weight: using cached result; rate:hard: -7 Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sonata.ens-lyon.org (Postfix) with ESMTPS id 3B52EA011F for ; Mon, 25 May 2026 23:12:22 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wRcaf-0006Sw-Sv; Mon, 25 May 2026 17:12:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wRcae-0006SY-FM for bug-hurd@gnu.org; Mon, 25 May 2026 17:12:00 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wRcac-0006GX-Qd for bug-hurd@gnu.org; Mon, 25 May 2026 17:12:00 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-49068493267so9192755e9.1 for ; Mon, 25 May 2026 14:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779743517; x=1780348317; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yEMigIvWzXCgWvCpgAsRyLBnhlB0wvBqscVpP8CmYVM=; b=c4Swec8UqRzmSroMI2Uvb60KLX5QpOStPEC4peSHN8h+4PQXq/NoRJB2c7Ca4KrKYd ALI3H+S9nQDc+lKcql6fgptj3GYWUhukdkAxYiF+Hx9BAeia/eQDAKT1T9AGALZFusPg LSQwxEQ7bzmxol8KnHenHdUmKcnJtafiGREd1Co/uOFAlHOmpgA3TPJmMkegqCUltpum c6iT+K4Joht3MfnGMYMIgAJl5UOC+Hp2MubSbS6XmlP6tsXKe37WcsQ5vYOHI6xzwv32 ai+mpfhBkfoFvJKBitKANy2Uo1dTy7UVSH32XhyGDkM9JmTXmJoqJg3g4XQzs7pk1yck nDPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779743517; x=1780348317; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yEMigIvWzXCgWvCpgAsRyLBnhlB0wvBqscVpP8CmYVM=; b=p94PkX0lNA5xlO2Ud++VbR8hTd41ZfYylxX0DE1ZjnXDn3UKWXCfBXrAERqs8d8GCy gs+8/VEsacPFDwG0s+IJ51+NPvmZqn/PDVGiktU/dco/m1G5PN0i/3TJiH4zEWG3wXSd sVakRPqtiag+cmgSrBPtuF27JnBwutZnqs/oYe63j0b3KrO49mnXmEx0Ldts73JOIDLM isTe9+JJnOTDet3bVDEsRDZrPMMg8TfMftnMtNOgo2zyfhchaXgGCAJvmr1zXkAOlRN1 B1uBHW10UbIOdTLq7tuj107Xec3nsdidHyhbANWQEEdaqOmkFryRVll6+E7eznphghEq PxnQ== X-Gm-Message-State: AOJu0Yym4ZvMct7WyY/75QAbWqxtUmrbesz1fw7jPRvuwFd/FEuVs/pH 0oXsusrv0wID5RSTl6Lt9MHy2MsczoRzFZWj2rzLI9rTaIZk+Xj7Wbsf5ehn9A== X-Gm-Gg: Acq92OH5FV4CLpKue0TS3SQUpaRbhorQRyMCBfvt0a63SXYzRLhdyMJWz8BgaY6dgDq aYUVylHqVWNwsgZRMQfgHvnUzDRNSCIBmxL0oo7tyxJsUx7PMsjMj+ktnireGzXb1si/SGCydgD m87XcdC0JoHWN9LJ2BUTN5UglkAFI2hbm2Co+XsNgmLru3eI2YlEICPoO5dOz7yhgojj0Hf9VIJ MWNPZQC0jJuKOxUZCkcv/DElE9IL+tEomtaGC1bSE41aelJE0wCVfLGP4CUV0AkJtkwXHaDqdzr FOrWMfPXvDuE5pMoQlWYXDKFIXembE3WwvDvzB+Ob26JX/wJQ8jF1BQg6+OqT1KnWOUQhz0rEu/ +r1VmJol8Rx5+1OBkj9oGDUDMj5egZ0Exhp9swLSVkOxMBCy9pasQ3maQ0A/exOR/XeCi2/8cLX 7OYZfZ/uV2NPUH/EOhealLSfA/Eh6JT7ZtvF6r5EVWh+up+mG+iaJ/37RyitGGCy8PxZ5hYCZI2 50irp5euZYNaikxCQSW7RFKO0XAxW0+Gz5/R6vNht414DLpoqMnlRJT9UjEkIjSJA== X-Received: by 2002:a05:600c:46cb:b0:48d:366:b962 with SMTP id 5b1f17b1804b1-4904248776fmr259768265e9.6.1779743517046; Mon, 25 May 2026 14:11:57 -0700 (PDT) Received: from etiennexps.localdomain (i15-lef02-ix2-87-90-193-55.ft.lns.abo.bbox.fr. [87.90.193.55]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490454cfcaesm268281105e9.4.2026.05.25.14.11.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 14:11:56 -0700 (PDT) From: Etienne Brateau To: bug-hurd@gnu.org Cc: Etienne Brateau Subject: [PATCH] hurd: add validations in msync Date: Mon, 25 May 2026 23:11:42 +0200 Message-ID: <20260525211142.131508-1-etienne.brateau@gmail.com> X-Mailer: git-send-email 2.54.0 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=etienne.brateau@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-hurd@gnu.org X-Mailman-Version: 2.1.29 Precedence: list Sender: bug-hurd-bounces+samuel.thibault=ens-lyon.org@gnu.org X-Rspamd-Queue-Id: 83B593B0 X-Spamd-Result: default: False [-2.81 / 15.00]; NEURAL_HAM(-3.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; MAILLIST(-0.20)[mailman]; MIME_GOOD(-0.10)[text/plain]; HAS_LIST_UNSUB(-0.01)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; MIME_TRACE(0.00)[0:+]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; TAGGED_FROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; FORGED_SENDER_MAILLIST(0.00)[]; RCVD_COUNT_TWELVE(0.00)[15]; FROM_HAS_DN(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; FROM_NEQ_ENVFROM(0.00)[etiennebrateau@gmail.com,samuel.thibault@aquilenet.fr]; TO_DN_SOME(0.00)[]; TAGGED_RCPT(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; FREEMAIL_CC(0.00)[gmail.com] X-Rspamd-Action: no action X-Spamd-Bar: -- X-Rspamd-Server: hera X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, JMQ_SPF_NEUTRAL, MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_PBL, SPF_HELO_PASS, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org 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 POSIX specs specify that invalid flags shall return EINVAL and that ENOMEM shall be returned in case of address outside of address space or when one or more pages are not mapped. Signed-off-by: Etienne Brateau --- sysdeps/mach/hurd/msync.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/sysdeps/mach/hurd/msync.c b/sysdeps/mach/hurd/msync.c index 46eabd1ee7..e6c135cbf4 100644 --- a/sysdeps/mach/hurd/msync.c +++ b/sysdeps/mach/hurd/msync.c @@ -36,6 +36,15 @@ msync (void *addr, size_t length, int flags) vm_address_t cur = (vm_address_t) addr; vm_address_t target = cur + length; + if (flags & ~(MS_ASYNC | MS_INVALIDATE | MS_SYNC)) + return __hurd_fail (EINVAL); + + if (flags & MS_ASYNC && flags & MS_SYNC) + return __hurd_fail (EINVAL); + + if (target < cur) + return __hurd_fail (ENOMEM); + vm_size_t len; vm_prot_t prot; vm_prot_t max_prot; @@ -45,6 +54,7 @@ msync (void *addr, size_t length, int flags) vm_offset_t offset; kern_return_t err; + kern_return_t unmapped_error = KERN_SUCCESS; int cancel_oldtype; while (cur < target) @@ -59,13 +69,16 @@ msync (void *addr, size_t length, int flags) return __hurd_fail (err); if (begin > cur) - /* We were given an address before the first region, - or we found a hole. */ - cur = begin; + { + /* We were given an address before the first region, + or we found a hole. */ + cur = begin; + unmapped_error = ENOMEM; + } if (cur >= target) /* We were given an ending address within a hole. */ - break; + return __hurd_fail (ENOMEM); if (MACH_PORT_VALID (obj)) { @@ -90,5 +103,7 @@ msync (void *addr, size_t length, int flags) cur = begin + len; } + if (unmapped_error != KERN_SUCCESS) + return __hurd_fail (unmapped_error); return 0; }