From nobody Mon Oct 23 21:42:24 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SDpZ83g5cz4yX53; Mon, 23 Oct 2023 21:42:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SDpZ83GPXz3WdN; Mon, 23 Oct 2023 21:42:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698097344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eHvgFJLoS2Jn3cOekE8ZYzy3K/U7C0eRWh478kdC3Zg=; b=iRVb45Owrzx+T3WdSErp8Ntt5IYcVFUzx+hXKLr+64tMp4j4G6S880ZvP40usgPSve23xJ 8y8Vc2AXcR5o/bQNAzgmqkXlEEEFxgaDiPyNUCJiZn+wcs55Rh0BWkaO4TNizeEAzKrMTi 1SdhByZE36N5+P1IWz3zKvGw4lK82yp4QZocKfXyB3yxNgytvGmkFPrC8EuwSsSiOisR4Z i3sgMIbOb7JECe2bY76m7lBU8hatX3TgXhVSp0YdEFYZ+OVx3OzUI59+NAYdZ93Z59QQ+e 82UP5DVnce4P8wEvCV6QVf+GnAgOAh9Y7TAA3a+IliQ2zQjOX5ZNuIa9O4uLuQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1698097344; a=rsa-sha256; cv=none; b=TEgn10CBBlhqNfsx/SW0F22AtdJsj7fqksgrac2wvwgi87q0mq28pGFVLofk7cvzRRjVEG OFVF/fJJu5XZrfrgZ7GUcHh+NjiYYFcpfgg+egA10GsLvwNGludbdsFfkFTJrq4KAm7y1+ /fX4JIIpaRVs0WL+6pGTAgBZqTKAYaTKde53KlXjFixGLZBMlKHBCPdM5ALe+4zcdt/wss SoihrI5zYjp5kgRDKtSdJqN00nwbgPVsebBQbOTVF2zE6TOmYV+Wts+kQ4n5b+1KOca2wq PXM2RlABdTajmslo6N2Qzx8fQ7LmjhjCbuKRidJfT0ToKSO8T8T/S3EJpv64wQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698097344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eHvgFJLoS2Jn3cOekE8ZYzy3K/U7C0eRWh478kdC3Zg=; b=q0pNIC8CVAiNlNJZncmGUD9/wuxi5u40Lfp+V4qdTiFKksf8s8KFuF8kRgZSYh7jAp2iCq n5R9ec1CSNhOqGyCEq+wfIUAXY9YA9YA/guMzSbNiRZmHoa9iQisHpGhkeK1Oj/aj8uzGu PaZc4BRzHo1x4UboU7CHpGRkyaxTZEr4TwkZo+Bmycqna7NHtH77g+p1kwcNk/48p/0997 P3ufSmXtmo5bJCY6c9HOMbU3HaTrso1dCnZ4XXVAMTAWN/DqEpa2A6w09LIIbx2m4AugsS uQ3VV1aaFqKL57bxOPX0dsreclP6clA8lQRqOUzbP9Ao9nL9uyqX8YFb/5avSQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SDpZ82JhXzwM6; Mon, 23 Oct 2023 21:42:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 39NLgO74001708; Mon, 23 Oct 2023 21:42:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 39NLgOWG001705; Mon, 23 Oct 2023 21:42:24 GMT (envelope-from git) Date: Mon, 23 Oct 2023 21:42:24 GMT Message-Id: <202310232142.39NLgOWG001705@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 82ea0132c8b1 - main - gssd: Add support for the new upcall required by commit 428879dc9110 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 82ea0132c8b17a7a6067c8a36c6434e587ede6de Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=82ea0132c8b17a7a6067c8a36c6434e587ede6de commit 82ea0132c8b17a7a6067c8a36c6434e587ede6de Author: Rick Macklem AuthorDate: 2023-10-23 21:41:26 +0000 Commit: Rick Macklem CommitDate: 2023-10-23 21:41:26 +0000 gssd: Add support for the new upcall required by commit 428879dc9110 Commit 428879dc9110 adds a requirement for a new upcall for the gssd(8). This patch adds that upcall. Unfortunately, the old gssd.c would not build against the new patched gssd.x. This patch will fix the build. MFC after: 1 month --- usr.sbin/gssd/gssd.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c index 59e0fc057f84..a22891f3bebf 100644 --- a/usr.sbin/gssd/gssd.c +++ b/usr.sbin/gssd/gssd.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -42,6 +43,7 @@ #ifndef WITHOUT_KERBEROS #include #endif +#include #include #include #include @@ -49,6 +51,8 @@ #include #include #include +#include +#include #include #include #include @@ -624,6 +628,51 @@ gssd_import_name_1_svc(import_name_args *argp, import_name_res *result, struct s return (TRUE); } +/* + * If the name is a numeric IP host address, do a DNS lookup on it and + * return the DNS name in a malloc'd string. + */ +static char * +gssd_conv_ip_to_dns(int len, char *name) +{ + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + char *retcp; + + retcp = NULL; + if (len > 0) { + retcp = mem_alloc(NI_MAXHOST); + memcpy(retcp, name, len); + retcp[len] = '\0'; + if (inet_pton(AF_INET, retcp, &sin.sin_addr) != 0) { + sin.sin_family = AF_INET; + sin.sin_len = sizeof(sin); + sin.sin_port = 0; + if (getnameinfo((struct sockaddr *)&sin, + sizeof(sin), retcp, NI_MAXHOST, + NULL, 0, NI_NAMEREQD) != 0) { + mem_free(retcp, NI_MAXHOST); + return (NULL); + } + } else if (inet_pton(AF_INET6, retcp, &sin6.sin6_addr) != 0) { + sin6.sin6_family = AF_INET6; + sin6.sin6_len = sizeof(sin6); + sin6.sin6_port = 0; + if (getnameinfo((struct sockaddr *)&sin6, + sizeof(sin6), retcp, NI_MAXHOST, + NULL, 0, NI_NAMEREQD) != 0) { + mem_free(retcp, NI_MAXHOST); + return (NULL); + } + } else { + mem_free(retcp, NI_MAXHOST); + return (NULL); + } + gssd_verbose_out("gssd_conv_ip_to_dns: %s\n", retcp); + } + return (retcp); +} + bool_t gssd_canonicalize_name_1_svc(canonicalize_name_args *argp, canonicalize_name_res *result, struct svc_req *rqstp) { @@ -933,6 +982,25 @@ gssd_display_status_1_svc(display_status_args *argp, display_status_res *result, return (TRUE); } +bool_t +gssd_ip_to_dns_1_svc(ip_to_dns_args *argp, ip_to_dns_res *result, struct svc_req *rqstp) +{ + char *host; + + memset(result, 0, sizeof(*result)); + /* Check to see if the name is actually an IP address. */ + host = gssd_conv_ip_to_dns(argp->ip_addr.ip_addr_len, + argp->ip_addr.ip_addr_val); + if (host != NULL) { + result->major_status = GSS_S_COMPLETE; + result->dns_name.dns_name_len = strlen(host); + result->dns_name.dns_name_val = host; + return (TRUE); + } + result->major_status = GSS_S_FAILURE; + return (TRUE); +} + int gssd_1_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) {