From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id B1C89394FC3F for ; Thu, 20 May 2021 06:44:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B1C89394FC3F Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-561-lx_I6IpwNcqJHUxSqIDGHw-1; Thu, 20 May 2021 02:44:49 -0400 X-MC-Unique: lx_I6IpwNcqJHUxSqIDGHw-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 90FCB8B02A9; Thu, 20 May 2021 06:44:44 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-137.ams2.redhat.com [10.36.112.137]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8D9D5D742; Thu, 20 May 2021 06:44:43 +0000 (UTC) From: Florian Weimer To: Adhemerval Zanella via Libc-alpha Subject: Re: [PATCH v2 05/25] linux: Add fallback for 64-bit time_t SO_{RCV, SND}TIMEO References: <20210518205613.1487824-1-adhemerval.zanella@linaro.org> <20210518205613.1487824-6-adhemerval.zanella@linaro.org> Date: Thu, 20 May 2021 08:44:41 +0200 In-Reply-To: <20210518205613.1487824-6-adhemerval.zanella@linaro.org> (Adhemerval Zanella via Libc-alpha's message of "Tue, 18 May 2021 17:55:53 -0300") Message-ID: <87zgwpsy3q.fsf@oldenburg.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Thu, 20 May 2021 06:44:52 -0000 * Adhemerval Zanella via Libc-alpha: > +#ifndef __ASSUME_TIME64_SYSCALLS > +static int > +getsockopt32 (int fd, int level, int optname, void *optval, > + socklen_t *len) > +{ > + int r = -1; > + > + if (level != SOL_SOCKET) > + return r; > + > + switch (optname) > + { > + case COMPAT_SO_RCVTIMEO_NEW: > + case COMPAT_SO_SNDTIMEO_NEW: > + { > + if (*len < sizeof (struct __timeval64)) > + { > + __set_errno (EINVAL); > + break; > + } > + > + if (optname == COMPAT_SO_RCVTIMEO_NEW) > + optname = COMPAT_SO_RCVTIMEO_OLD; > + if (optname == COMPAT_SO_SNDTIMEO_NEW) > + optname = COMPAT_SO_SNDTIMEO_OLD; > + > + struct __timeval32 tv32; > + r = getsockopt_syscall (fd, level, optname, &tv32, > + (socklen_t[]) { sizeof tv32 }); > + if (r < 0) > + break; > + struct __timeval64 *tv64 = (struct __timeval64 *) optval; > + *tv64 = valid_timeval32_to_timeval64 (tv32); > + *len = sizeof (*tv64); > + } I think POSIX requires checking the incoming *len value and truncating the output. Thanks, Florian