From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ua1-x930.google.com (mail-ua1-x930.google.com [IPv6:2607:f8b0:4864:20::930]) by sourceware.org (Postfix) with ESMTPS id 6FA6C3858D35 for ; Fri, 10 Dec 2021 12:47:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6FA6C3858D35 Received: by mail-ua1-x930.google.com with SMTP id r15so16613564uao.3 for ; Fri, 10 Dec 2021 04:47:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=7ODbWtOuVdiH1/S+HJUwqD+uZPK952mMWTPJPh3nqTE=; b=45hnnpwbophqrLxVsHVexm5a4FEY5v/NoaiEKjYOXzyqJfH+zsdkcQEPDvNkWaND2E OpGpvG2QUGUJyU0phfz+lqRt/+x7KVWoDXL/FmPkwx5WngQ/CMDDAXE7xrAgBXAY067/ 6JWt0zTtf2Eo9diFcpmwqrF51nGTrUefaIFi9ytH+aW55vi+TMbPtigCeQoL8q42O1b7 V9g0ORaj3Vp7rBJv4I54dCH8kXxPTmUezw8EPCqzhk2zm2LSdl9ToidMftk6E6ynVRBL TWMUJg9qP9hK6fh0V73296eFLd2jpuMV7/GooSHP9ws0B32yj5xuPS1kytIC0/ElPNtJ s5pg== X-Gm-Message-State: AOAM533S4Hgh+WRUucgmd1jOYYu0uvnprWdVWKGcdCnYseP2MCw6rwK1 URZsMu9GJO99jIYX89iglfGGP9U9dzLORg== X-Google-Smtp-Source: ABdhPJy6GWiKq+OpLnIOBk1CoIJ2wDmVEHTXbvqE7y+LnFWyhV+s4z0QTWb0cL43kuy9f1dpPDAr+g== X-Received: by 2002:a67:b103:: with SMTP id w3mr16059337vsl.84.1639140425949; Fri, 10 Dec 2021 04:47:05 -0800 (PST) Received: from ?IPV6:2804:431:c7ca:a776:ce11:d591:8bd5:613f? ([2804:431:c7ca:a776:ce11:d591:8bd5:613f]) by smtp.gmail.com with ESMTPSA id bj50sm1873011vkb.7.2021.12.10.04.47.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 10 Dec 2021 04:47:05 -0800 (PST) Message-ID: <32567bed-9014-3db5-371a-56d4a8420966@linaro.org> Date: Fri, 10 Dec 2021 09:47:03 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH v2 2/2] linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350) Content-Language: en-US To: Florian Weimer , Adhemerval Zanella via Libc-alpha References: <20210929140619.279302-1-adhemerval.zanella@linaro.org> <20210929140619.279302-2-adhemerval.zanella@linaro.org> <878rwsbrri.fsf@oldenburg.str.redhat.com> From: Adhemerval Zanella In-Reply-To: <878rwsbrri.fsf@oldenburg.str.redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.9 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 12:47:08 -0000 On 10/12/2021 08:53, Florian Weimer wrote: > * Adhemerval Zanella via Libc-alpha: > >> diff --git a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c >> index 00c934c413..5ee930035b 100644 >> --- a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c >> +++ b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c >> @@ -54,26 +54,26 @@ __convert_scm_timestamps (struct msghdr *msg, socklen_t msgsize) >> cmsg != NULL; >> cmsg = CMSG_NXTHDR (msg, cmsg)) >> { >> + if (cmsg->cmsg_level == SOL_SOCKET) >> { >> + switch (cmsg->cmsg_type) >> + { >> + case COMPAT_SO_TIMESTAMP_OLD: >> + if (type != 0) >> + break; >> + type = COMPAT_SO_TIMESTAMP_NEW; >> + goto common; >> + >> + case COMPAT_SO_TIMESTAMPNS_OLD: >> + type = COMPAT_SO_TIMESTAMPNS_NEW; >> + >> + /* fallthrough */ >> + common: >> + memcpy (tmp, CMSG_DATA (cmsg), sizeof (tmp)); >> + tvts[0] = tmp[0]; >> + tvts[1] = tmp[1]; >> + break; >> + } >> } >> >> last = cmsg; > } > > if (last == NULL || type == 0) > return; > > if (CMSG_SPACE (sizeof tvts) > msgsize - msg->msg_controllen) > { > msg->msg_flags |= MSG_CTRUNC; > return; >> } >> >> msg->msg_controllen += CMSG_SPACE (sizeof tvts); >> + cmsg = CMSG_NXTHDR (msg, last); >> if (cmsg == NULL) >> return; >> cmsg->cmsg_level = SOL_SOCKET; > > How can cmsg be NULL at the final if? We always iterate until we have > cmsg == NULL, so CMSG_NXTHDR (msg, last) should be NULL? Indeed I think it should be safe to drop the check, we already check if before with CMSG_SPACE and return MSG_CTRUNC if this is no extra space (which will make CMSG_NXTHDR return NULL). Are you ok with this change?