From patchwork Wed May 7 14:17:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 888066 Delivered-To: patch@linaro.org Received: by 2002:a5d:4683:0:b0:38f:210b:807b with SMTP id u3csp407071wrq; Wed, 7 May 2025 07:23:13 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVompe0A1X+MyBPVRzwsKs2JQilsLPoVBk1hKlrcIHVb/gP23SKamB5pDsEyAw3qZ9GL+Haag==@linaro.org X-Google-Smtp-Source: AGHT+IEJfZZ1z6oRdZJYAUFvJR4oDwfUCG4l8IUsMtqATJzJ1Q0IOach7VpOYGnGU3KMsrYzNzKO X-Received: by 2002:a05:620a:4608:b0:7c7:b60f:ebd8 with SMTP id af79cd13be357-7caf7388e7cmr471097285a.24.1746627793150; Wed, 07 May 2025 07:23:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1746627793; cv=pass; d=google.com; s=arc-20240605; b=jvVyDFS0oOXsCZV/CzMxfO9MYnxlxo9yqcqqS7AaPEw3+w6XylKJxwjJ7bdVwee4vx KIgxkR6A5cPwvVQkQwujU7yqX5r6Wmjl+AQqQEyHw6R18ee8EkkH4X7aUAzY0GmP4P+t OVlk023YEhpQxaEFU74VHzS8yMkQxJMSkr7fQQtAwK9N2CXlIzAUaPXxcZTZYPibcis4 q5v1UuxImGhxme0onocdtBjNoxJOne3otElNZegDBOwMfz7W0Hg1ymTKxLHD8yOCFZ/o w9WWLOCWVvt2iDAnv6TpQL6jTQN1uNIJNcPdPnFL8ijczoD0qaDAKE2EyEVVcTnuxGyV dfJw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=eXsmJqB3dgs2JFUs9C3hMHnIoPcQPaxvyawgf67FwtI=; fh=v2Nv3k9i7Amxu65q1mEuFELTOLzYYycJBMRhbhFxZhE=; b=fHcjZOMAxqz9aoDov2/k/HxvUbffHeOvE3a3cKned5Sb6GP4E2nvPXI8KGcHTxcMd+ WYbCsoxxojub6q7fpDdt35A00dhrPeRX+ble59HibbFnLwfJL4u3lhOMyHeHX8tw+AtK nFHXxS23asHJn7338doJsr/hSdDlCF7qZGd1jBdsDih95+lME8tlIdKmLVn/VZjjEelG KsmDDILejkS7/dEj3MOrDNJU23P0N1tL4feWHMDKkEYvpcOd7MemPLPMnHwAPcugHppG J94SOfeuiGsnCM+hu2/e5qxHVPp0TG4y3anhs3usPdkgh0dDRH9PQRY+P+s3iPP9elt5 dCZg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kS5N0QOO; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id af79cd13be357-7caf75c96a5si210734885a.530.2025.05.07.07.23.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 07:23:13 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kS5N0QOO; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D253B3857732 for ; Wed, 7 May 2025 14:23:12 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id 8FF533858D34 for ; Wed, 7 May 2025 14:22:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8FF533858D34 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8FF533858D34 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::52b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1746627739; cv=none; b=RAvnbjLWqLhIDxQ3CU7dfmqT1F7sN4W43+tZpFRx4k0R9jqaMw1Zw8KddkU86joe4IZQB2aguga3AXzI2fW2tFbBVTge9VxjSRtIeRe+JOEP++KFj7b8p8SUO9kbwYa+ntcSYm5ZVPfrG3mFUBSARHiKzwg45N5ewGB+xJfoGPI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1746627739; c=relaxed/simple; bh=y2y/fQ8F/lW4CCZxvX56Ei/ojX4qTy3VjBu84XEHMmk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=f6H5VjsWjVrLwYxszuvYXnqoi2wnmk8yR1EUaW4u+l5p5mvt032+kJRIoFkCU4sVdXkTTYoiwIvOrvdtqL5YCW9VYXVHJZ/uf+q1J7FyDnhLpH3awbsC8+bFBA+4GIBFDPRP7oiWXGoMtAv1RIq2zAjibSh9rZCMp6SVkDD7RP4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-af6a315b491so6291328a12.1 for ; Wed, 07 May 2025 07:22:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746627737; x=1747232537; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eXsmJqB3dgs2JFUs9C3hMHnIoPcQPaxvyawgf67FwtI=; b=kS5N0QOOemHlsWJRs/aeUhTW8bp102t1xF9xZdYccqloCkUUkTWdsc7cgp376eJ0YG 3vq0Aukhk/rNrw3A7/rdgs/ENLd9k0HwimDF3Dtal5uLFe2iXG1xsHClVepQTBCm3Wuu 0vsMio8nqNGHJ1lRSblFZ6bnhiztp4WXk6oXEIeI6GJcc2JSnm3c4tW0N0XOQJ3O6iKx rrdch2nVGufv1FfZiCAzDezVyQBORuPCrLVGd5fXnSE49oV2tNhvCRfAWoWYtRcu8aYT a3UwtUEbXH7p/UjSoD1kDJKaY5TrShRBgCCo0qOmBo8/auxxbZDt4U/NiHCfpjQakATr JOQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746627737; x=1747232537; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eXsmJqB3dgs2JFUs9C3hMHnIoPcQPaxvyawgf67FwtI=; b=swTRn6uVR3pxOIESXtjG7T1PHC/9IZ6FLYoWVEVaSxkS4hjgdWgtU8jcsMeCnqPslV Iy0ub3RYv7A+1lwgZEwwEiqNbXFGX/7w48E+jOhLYu+zIRuwx9uUfGRVTEaUQPzB3zCg +5rfzD9hRMPO4i+YqEcDFyTZOSfyM0bi3egkFzfFMeaihswRdfO2IlprKtlq9KfFDtNO OkvAN5OhV8uvNJE8z4grsB0GwEM4DcalPMIvsCbbiPFbpQ64rxOsLRzIHBxZVRiaHJCV 8P97FrsnRvk9ukfnikBFvy+K5xyhyCH6DYKuBrPSqqAi6wNfyHKE2a+cD231kT/cp4CR zZCg== X-Gm-Message-State: AOJu0Yxe7TFlaRSilbVfpWiLCHa28eTW+IimfcSgVmEoj6qcwS8E9hum GggWdPcBzAkI8NzIYdR4ibeh1dIba9L1M//lkEXkeaM0z2XIR0dww7uIJ35DJp5BJ72zkkG6pA4 W1rw= X-Gm-Gg: ASbGncscAaCcCkeGkVFnK1Kxo7WL1+Celml1oHGjqBU+zzA6sbh2ziImkpwsEWhx6Vj fjIdv6IYrh88DtUxAo5tAqwBTZmVd+ogdSA+couK5YysoTnmR6QWtbIKoByI4vc8msa/xBP+cpi cagoE/bAhRj+SlvbLTRizL4EtR/7TgFet+WMzCXQ4uO7lof3wBmVYE6LTSmc84W1M31aB+F2Qvk ki+s7a4bngPDRqZzJuCUxdTGGwKloqZdDLhtYt3QIzZU7GAQQM6fd2+sRlZRV1bwKkH06CjW3zc R5rn/BHUZimL0LeY2+s41W66aCiCl0SLYC1WXOzshAAdVp5cgvnakw== X-Received: by 2002:a17:90b:554f:b0:2ff:4f04:4261 with SMTP id 98e67ed59e1d1-30aac2d25aemr4215693a91.34.1746627737480; Wed, 07 May 2025 07:22:17 -0700 (PDT) Received: from mandiga.. ([2804:1b3:a7c0:2a60:2bef:3994:10d0:59c9]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30ad474a050sm179453a91.8.2025.05.07.07.22.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 07:22:17 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Carlos O'Donell Subject: [PATCH 10/11] argp: Fix shift bug Date: Wed, 7 May 2025 11:17:28 -0300 Message-ID: <20250507142110.3452012-11-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250507142110.3452012-1-adhemerval.zanella@linaro.org> References: <20250507142110.3452012-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 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~patch=linaro.org@sourceware.org >From gnulib commits 06094e390b0 and 88033d3779362a. --- argp/argp-parse.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/argp/argp-parse.c b/argp/argp-parse.c index 82c7b784de..99f8d9ecd4 100644 --- a/argp/argp-parse.c +++ b/argp/argp-parse.c @@ -735,12 +735,15 @@ parser_parse_opt (struct parser *parser, int opt, char *val) } } else - /* A long option. We use shifts instead of masking for extracting - the user value in order to preserve the sign. */ - err = - group_parse (&parser->groups[group_key - 1], &parser->state, - (opt << GROUP_BITS) >> GROUP_BITS, - parser->opt_data.optarg); + /* A long option. Preserve the sign in the user key, without + invoking undefined behavior. Assume two's complement. */ + { + int user_key = + ((opt & (1 << (USER_BITS - 1))) ? ~USER_MASK : 0) | (opt & USER_MASK); + err = + group_parse (&parser->groups[group_key - 1], &parser->state, + user_key, parser->opt_data.optarg); + } if (err == EBADKEY) /* At least currently, an option not recognized is an error in the