From owner-svn-src-head@freebsd.org Sat Aug 8 01:19:09 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B18E13797CE; Sat, 8 Aug 2020 01:19:09 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4BNks86hMHz484S; Sat, 8 Aug 2020 01:19:08 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wr1-x442.google.com with SMTP id a15so3158629wrh.10; Fri, 07 Aug 2020 18:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=URt+Lt50CxXdzjg17fe7YEW8ImjI8fZAj7tdDrqexqg=; b=gTxiFl44DXpFZHY+/MF22kkdL872qTR+P4FEnTY1nu+8HtjtK0OOide8P3bBbV9i/H LtK/0If+s6TFWpgaaa1T/HvlPMVB/YmSXvL6AlCOPHtHmUzI9B5ImiOmlN49c/yjEEXc ZU67pSJBGIBnEGlVyWvo385JnJWqWYknLLiVeYpn5SvNUFkmvuOzlusTpMasdmcvCmpT ehLWw2U7fw22GJCG/rTh1af4ERuS7TVU9VYS5ckBJ82jZrp71+mY8DwjYRrzFW68cGNd dwYELJePcZcaqYVmmz5r/rQf6oKoXi/uepByiV6YKGAHIXxSDCmWfT/KBgQBV8s8ocn7 5OHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=URt+Lt50CxXdzjg17fe7YEW8ImjI8fZAj7tdDrqexqg=; b=rQcC5V6+CC67yJ82in/7EFzDtNi/aq77C83lXeWhQjcnxYCRhq30/UARiM3GlU90Vh /GRNzLAeC3K/6sjSYLEM6GVQZBZVJe6+3HtaDlauMJiY+BCP0w5Hx6HbTL92gEkDyFMC J9W+++HYvr1PpxBfR8SunGa18sKlzHEfeBViZ7+5uMQRwwawX6yrxeTArG0XRWMBj/r1 IGc0+SuuAYQHvgwPMeo9K+7MEnbA0BXLjX1bV9M5MhHhSlEYMBWXVgvTE85Uoi7PZBnY VQuR7PCZ4mJmU0ewm8AmU9Ahtz13OKT94NPkJk3xVWVIDKwqmh65zzqv/rnlzHXac+AO tFiQ== X-Gm-Message-State: AOAM531Y2w+gD8BJBlmjATIFyZw1NYSbjAXInsMUivtUrBDINT/CAIEL gMNUiq/PxFZSXbKOOKEZHNGIDHIBL0j0eUd1C7KMKQ== X-Google-Smtp-Source: ABdhPJy5XihmnbN7nyPDdlul/DmFMSixybI85zvRLI0k/bj0W8ac0wz/PpGfDkN819EkWPb4w/d0KPZUg7znh/pSNa4= X-Received: by 2002:adf:f8d0:: with SMTP id f16mr15309331wrq.66.1596849546683; Fri, 07 Aug 2020 18:19:06 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:614c:0:0:0:0:0 with HTTP; Fri, 7 Aug 2020 18:19:05 -0700 (PDT) In-Reply-To: <202008062046.076KkDSc013901@repo.freebsd.org> References: <202008062046.076KkDSc013901@repo.freebsd.org> From: Mateusz Guzik Date: Sat, 8 Aug 2020 03:19:05 +0200 Message-ID: Subject: Re: svn commit: r363992 - head/usr.sbin/pwd_mkdb To: Alex Richardson Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4BNks86hMHz484S X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=gTxiFl44; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of mjguzik@gmail.com designates 2a00:1450:4864:20::442 as permitted sender) smtp.mailfrom=mjguzik@gmail.com X-Spamd-Result: default: False [-3.29 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.95)[-0.945]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-0.98)[-0.983]; TO_DN_SOME(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::442:from]; NEURAL_HAM_SHORT(-0.37)[-0.366]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Aug 2020 01:19:09 -0000 This broke i386 builds: /usr/src/usr.bin/chpass/field.c:175:15: error: incompatible pointer types passing '_bootstrap_time_t *' (aka 'unsigned long long *') to parameter of type 'time_t *' (aka 'int *') [-Werror,-Wincompatible-pointer-types] if (!atot(p, &pw->pw_change)) ^~~~~~~~~~~~~~ /usr/src/usr.bin/chpass/chpass.h:67:27: note: passing argument to parameter here int atot(char *, time_t *); ^ /usr/src/usr.bin/chpass/field.c:185:15: error: incompatible pointer types passing '_bootstrap_time_t *' (aka 'unsigned long long *') to parameter of type 'time_t *' (aka 'int *') [-Werror,-Wincompatible-pointer-types] if (!atot(p, &pw->pw_expire)) ^~~~~~~~~~~~~~ /usr/src/usr.bin/chpass/chpass.h:67:27: note: passing argument to parameter here int atot(char *, time_t *); ^ On 8/6/20, Alex Richardson wrote: > Author: arichardson > Date: Thu Aug 6 20:46:13 2020 > New Revision: 363992 > URL: https://svnweb.freebsd.org/changeset/base/363992 > > Log: > Allow bootstrapping pwd_mkdb on Linux/macOS > > We need to provide a struct passwd that is compatible with the target > system and this is not the case when cross-building from macOS/Linux. > It should also be a problem when bootstrapping for an i386 target from a > FreeBSD amd64 host since time_t does not match across those systems. > However, pwd_mkdb always truncates integer values to 32-bit so this > difference does not result in different databases. > > Reviewed By: brooks > Differential Revision: https://reviews.freebsd.org/D25931 > > Added: > head/usr.sbin/pwd_mkdb/pwd.h (contents, props changed) > Modified: > head/usr.sbin/pwd_mkdb/Makefile > > Modified: head/usr.sbin/pwd_mkdb/Makefile > ============================================================================== > --- head/usr.sbin/pwd_mkdb/Makefile Thu Aug 6 20:44:40 2020 (r363991) > +++ head/usr.sbin/pwd_mkdb/Makefile Thu Aug 6 20:46:13 2020 (r363992) > @@ -9,5 +9,8 @@ MAN= pwd_mkdb.8 > SRCS= pw_scan.c pwd_mkdb.c > > CFLAGS+= -I${SRCTOP}/lib/libc/gen # for pw_scan.h > +.if defined(BOOTSTRAPPING) > +CFLAGS+=-I${.CURDIR} > +.endif > > .include > > Added: head/usr.sbin/pwd_mkdb/pwd.h > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/usr.sbin/pwd_mkdb/pwd.h Thu Aug 6 20:46:13 2020 (r363992) > @@ -0,0 +1,66 @@ > +/*- > + * SPDX-License-Identifier: BSD-2-Clause > + * > + * Copyright 2018-2020 Alex Richardson > + * > + * This software was developed by SRI International and the University of > + * Cambridge Computer Laboratory (Department of Computer Science and > + * Technology) under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of > the > + * DARPA SSITH research programme. > + * > + * This software was developed by SRI International and the University of > + * Cambridge Computer Laboratory under DARPA/AFRL contract > (FA8750-10-C-0237) > + * ("CTSRD"), as part of the DARPA CRASH research programme. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY > WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > + * SUCH DAMAGE. > + * > + * $FreeBSD$ > + */ > + > +/* > + * When building pwd_mkdb we need to use target systems definition of > + * struct passwd. This protects against future changes to struct passwd > and > + * is essential to allow cross-building from Linux/macOS hosts since the > + * structure is not compatible there. > + */ > +#include > +#include > +/* > + * Note: pwd_mkdb always stores uint32_t for all integer fields (including > + * time_t!) so these definitions do not need to match sys/sys/_types.h > + */ > +typedef uint32_t _bootstrap_gid_t; > +typedef uint32_t _bootstrap_uid_t; > +typedef uint64_t _bootstrap_time_t; > +#define _GID_T_DECLARED > +#define _TIME_T_DECLARED > +#define _UID_T_DECLARED > +#define _SIZE_T_DECLARED > + > +#define gid_t _bootstrap_gid_t > +#define uid_t _bootstrap_uid_t > +#define time_t _bootstrap_time_t > +#define passwd _bootstrap_passwd > +#include "../../include/pwd.h" > +#undef gid_t > +#undef uid_t > +#undef time_t > -- Mateusz Guzik