From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x32c.google.com (mail-ot1-x32c.google.com [IPv6:2607:f8b0:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 16DDC3858C62 for ; Wed, 8 Mar 2023 13:11:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 16DDC3858C62 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-ot1-x32c.google.com with SMTP id m25-20020a05683026d900b006941a2838caso8930245otu.7 for ; Wed, 08 Mar 2023 05:11:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1678281077; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=nwZ3+GYgf3Nk4E8RR+NXzJnkmKffwTVnbq9AeVuV4FY=; b=oEa7PFW//Srp3wYmMhXVkMyMiNJmwcufEgGcmlcRAqIKyrA8WQH7UgNG4MmzJ30wki EXaC7NUSgvy1alLRVZfAlxqJuUsYgJCIrO5wecenQ5kiyfA61EQTA9LFrDqSGekyWmPb vCMxjuXfA/eNVR18TszQLr6lm80ITcvc3r6MGT0oY1HMsqk/wCxLNADnZWaoUKZ+8AVR 3b4s+ei2UFgztlmjchSZ8JPwFfdQQYXn8bic6typmJ5iBif7P91sKGPIvmnRsqCkfuT1 +IcB6GLQ1bMKP+SruR7q0Sot/kuS+Bl3SMWNuODfFCj2n3p0WRrcGTXivbUdiHt9kpj/ QiLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678281077; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nwZ3+GYgf3Nk4E8RR+NXzJnkmKffwTVnbq9AeVuV4FY=; b=BcQqKTZHtRVK0BeKo4y8yWo07MFVJxxkG1JerX6q5C4W2FWTp/W/i7sOe5GIbf4pK8 aym2UGRsu9/nHZXR45aOzidzJIOPXR8KW62TDoS5KWFhTLD5pVQcSkE21nVGfeOqNZcd ZIlO4s2to4BKnTRLT6A9YjoqMvRbB2KWvQ+NTgjGLITpnMPhwASxfWO74M6JS8Kq/wTO 2tjE8wNAHCB4XBL9vN/211P83si+yqKGf0I0d/XvVABREp9nc7wo9CleUJV01vSxvXmq hSxF9WGjtbMM3WAxgMhh1EEb31GkI+M7EQIutPXSd07ia9Kav7TkV+izSNEe8PngIfY3 eKfg== X-Gm-Message-State: AO0yUKVCVyyrQh0gxjVogNT3atxopytxTa6NoLP4XefbtMmQdwsv7fgq NzYtHfv69H6pxzIdfe7URYwubWswS5Feji8PutkwEA== X-Google-Smtp-Source: AK7set/z8VD2r/iXSkl9F/7ksnCNDgaydo/5bagVs0AqlJs6ymR3HDxR728jr6n5FNG6DSAL6npfbg== X-Received: by 2002:a05:6830:543:b0:68d:c122:5a51 with SMTP id l3-20020a056830054300b0068dc1225a51mr8363037otb.14.1678281077204; Wed, 08 Mar 2023 05:11:17 -0800 (PST) Received: from ?IPV6:2804:1b3:a7c0:544b:655d:5559:758d:90f7? ([2804:1b3:a7c0:544b:655d:5559:758d:90f7]) by smtp.gmail.com with ESMTPSA id k20-20020a9d7014000000b0068bc476d777sm6398870otj.13.2023.03.08.05.11.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Mar 2023 05:11:16 -0800 (PST) Message-ID: Date: Wed, 8 Mar 2023 10:11:14 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v4] rt: fix shm_open not set ENAMETOOLONG when name exceeds {_POSIX_PATH_MAX} Content-Language: en-US To: abushwang , libc-alpha@sourceware.org References: <20230307121620.793600-1-abushwangs@gmail.com> From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: <20230307121620.793600-1-abushwangs@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 07/03/23 09:16, abushwang wrote: > according to man-pages-posix-2017, shm_open() function may fail if the length > of the name argument exceeds {_POSIX_PATH_MAX} and set ENAMETOOLONG > > Signed-off-by: abushwang LGTM, thanks. Reviewed-by: Adhemerval Zanella > --- > posix/shm-directory.c | 12 +++++++++--- > rt/shm_open.c | 5 +++-- > sysdeps/pthread/sem_open.c | 5 +++-- > 3 files changed, 15 insertions(+), 7 deletions(-) > > diff --git a/posix/shm-directory.c b/posix/shm-directory.c > index 86d9fd8e4f..f130bab3c2 100644 > --- a/posix/shm-directory.c > +++ b/posix/shm-directory.c > @@ -25,6 +25,7 @@ > #include > #include > #include > +#include > > int > __shm_get_name (struct shmdir_name *result, const char *name, bool sem_prefix) > @@ -54,9 +55,14 @@ __shm_get_name (struct shmdir_name *result, const char *name, bool sem_prefix) > if (sem_prefix) > alloc_buffer_copy_bytes (&buffer, "sem.", strlen ("sem.")); > alloc_buffer_copy_bytes (&buffer, name, namelen + 1); > - if (namelen == 0 || memchr (name, '/', namelen) != NULL > - || alloc_buffer_has_failed (&buffer)) > - return -1; > + if (namelen == 0 || memchr (name, '/', namelen) != NULL) > + return EINVAL; > + if (alloc_buffer_has_failed (&buffer)) > + { > + if (namelen > NAME_MAX) > + return ENAMETOOLONG; > + return EINVAL; > + } > return 0; > } > libc_hidden_def (__shm_get_name) Ok. > diff --git a/rt/shm_open.c b/rt/shm_open.c > index 6c1f4d604f..fc1dc96bb4 100644 > --- a/rt/shm_open.c > +++ b/rt/shm_open.c > @@ -30,9 +30,10 @@ int > __shm_open (const char *name, int oflag, mode_t mode) > { > struct shmdir_name dirname; > - if (__shm_get_name (&dirname, name, false) != 0) > + int ret =__shm_get_name (&dirname, name, false); > + if (ret != 0) > { > - __set_errno (EINVAL); > + __set_errno (ret); > return -1; > } > > diff --git a/sysdeps/pthread/sem_open.c b/sysdeps/pthread/sem_open.c > index 2551b035e1..2d32a13557 100644 > --- a/sysdeps/pthread/sem_open.c > +++ b/sysdeps/pthread/sem_open.c > @@ -47,9 +47,10 @@ __sem_open (const char *name, int oflag, ...) > } > > struct shmdir_name dirname; > - if (__shm_get_name (&dirname, name, true) != 0) > + int ret = __shm_get_name (&dirname, name, true); > + if (ret != 0) > { > - __set_errno (EINVAL); > + __set_errno (ret); > return SEM_FAILED; > } > Ok.