From nobody Thu Sep 28 15:52:38 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 4RxJ064bjkz4tyR3; Thu, 28 Sep 2023 15:52:38 +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 4RxJ063m37z4KsT; Thu, 28 Sep 2023 15:52:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695916358; 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=A+ZiwWlyJ5mZ2tavvX3vLrKWTA/Ax6swOwogTwfP/1g=; b=NCaEiXNiYNV4P0NfkJFqWgR7HjNs/CqRNHBVSpLH+Urog/iBB5zwtNRWT2kossMbH0xC0t 9gnOy1yn0kRlicLuYL1hGjME+Ik56cBog18tzY7jleZ+jwKhPVOx0UvtJUoXEqrAahguA7 Sbg65qrN67w/JJ0mIVJzZuxEoDQk7mOR8zbnAecoCEzD3OFNHByDgZvpzsNzxzUNnCxq7A P6RVNhApjGsLv+KElTr8gEjND7z43jrk81wWvbsY/jVwvB3rN12dEL81I9OON9KVNOgFaB fTA7C4x6Miz1Ki+y2ceLTpFHQnN4BNYJGRXyCWXDiv8FmtQgKkY3wrSFYcc1cQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1695916358; a=rsa-sha256; cv=none; b=raa9vK/jQhQp0rgV2GDSO8MZ8fsHpEBOuaNiTIRAWUI4wqIn/jy8afg2TwdjT1tY0el4nW zzU+WiLReKTV07SA0+SIWUF+Ax5JP/GnV7UKcwgsSmbz/OLVyPRdQEwY+TquzDlKflZtHa v+Hfiw1NF03ou7N2cSIpuTHQne3+FdWB0uKtKveTFCq64v0Pd8moTjLMQeeo+XGFi6RwI7 VVFnA1LC5ebzFKdXsDaFxIGzgTiVt0Lk7pAPBdM3mvztWNPNsK5C21gzgF0t+RJV8wAZbh 1Q2xTGcXp8o2wcLT5KNjeJYcYgr98c6QhTPmN0VSM/tEIPJQmVvC+u5tg0VTRA== 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=1695916358; 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=A+ZiwWlyJ5mZ2tavvX3vLrKWTA/Ax6swOwogTwfP/1g=; b=FYiHh7qkw5ctKtUU/gxPrseHtXM5oAnK7UPg1ZOyDGSBc//kdvsssXuuMTMr4UpciK2vg/ yxRILZ+0Tsy6p7ZJ9hB5gnUzNcpdFa9r/4OqDsnqmDH02GIQF4jm733IUcis+swhG7ZS0b 6sWrI1sDYXiBBwQbtmhRVY6lFhTiuVeQgnYDTIq8TN/T7FLC/6ABaSEg2RP7ZMtU/xHPUC QV6uVwNmblW05V5hlXIOag+p24YFBToOJ92ViuwKOKWDNEvtOVsqiBKKFuVkJRPIkTeREn EJBj4we+Q1AFo2/+5z8+EVyFROMJARURA8Twp/6xikpKhSM9N3o9Pf3raOkMqA== 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 4RxJ062smKzDL9; Thu, 28 Sep 2023 15:52:38 +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 38SFqcrA022168; Thu, 28 Sep 2023 15:52:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38SFqcEA022165; Thu, 28 Sep 2023 15:52:38 GMT (envelope-from git) Date: Thu, 28 Sep 2023 15:52:38 GMT Message-Id: <202309281552.38SFqcEA022165@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 688ecad8e197 - main - syslogd: Move prop_filter allocation into function 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: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 688ecad8e197b1e1337de5160c56e4137276974b Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=688ecad8e197b1e1337de5160c56e4137276974b commit 688ecad8e197b1e1337de5160c56e4137276974b Author: Jake Freeland AuthorDate: 2023-09-01 02:50:39 +0000 Commit: Mark Johnston CommitDate: 2023-09-28 15:51:53 +0000 syslogd: Move prop_filter allocation into function Clean up the cfline() function by moving the prop_filter memory allocation into the prop_filter_compile() function. Reviewed by: markj MFC after: 3 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D41373 --- usr.sbin/syslogd/syslogd.c | 72 ++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index c63683efead6..40c233f02d7f 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -459,8 +459,7 @@ static int socklist_recv_sock(struct socklist *); static int skip_message(const char *, const char *, int); static int evaluate_prop_filter(const struct prop_filter *filter, const char *value); -static int prop_filter_compile(struct prop_filter *pfilter, - char *filterstr); +static struct prop_filter *prop_filter_compile(const char *); static void parsemsg(const char *, char *); static void printsys(char *); static int p_open(const char *, pid_t *); @@ -2707,17 +2706,31 @@ init(bool reload) /* * Compile property-based filter. - * Returns 0 on success, -1 otherwise. */ -static int -prop_filter_compile(struct prop_filter *pfilter, char *filter) +static struct prop_filter * +prop_filter_compile(const char *cfilter) { - char *filter_endpos, *p; + struct prop_filter *pfilter; + char *filter, *filter_endpos, *filter_begpos, *p; char **ap, *argv[2] = {NULL, NULL}; int re_flags = REG_NOSUB; int escaped; - bzero(pfilter, sizeof(struct prop_filter)); + pfilter = calloc(1, sizeof(*pfilter)); + if (pfilter == NULL) { + logerror("pfilter calloc"); + exit(1); + } + if (*cfilter == '*') { + pfilter->prop_type = FILT_PROP_NOOP; + return (pfilter); + } + filter = strdup(cfilter); + if (filter == NULL) { + logerror("strdup"); + exit(1); + } + filter_begpos = filter; /* * Here's some filter examples mentioned in syslog.conf(5) @@ -2738,7 +2751,7 @@ prop_filter_compile(struct prop_filter *pfilter, char *filter) if (argv[0] == NULL || argv[1] == NULL) { logerror("filter parse error"); - return (-1); + goto error; } /* fill in prop_type */ @@ -2752,7 +2765,7 @@ prop_filter_compile(struct prop_filter *pfilter, char *filter) pfilter->prop_type = FILT_PROP_PROGNAME; else { logerror("unknown property"); - return (-1); + goto error; } /* full in cmp_flags (i.e. !contains, icase_regex, etc.) */ @@ -2779,7 +2792,7 @@ prop_filter_compile(struct prop_filter *pfilter, char *filter) re_flags |= REG_EXTENDED; } else { logerror("unknown cmp function"); - return (-1); + goto error; } /* @@ -2791,7 +2804,7 @@ prop_filter_compile(struct prop_filter *pfilter, char *filter) filter += strspn(filter, ", \t\n"); if (*filter != '"' || strlen(filter) < 3) { logerror("property value parse error"); - return (-1); + goto error; } filter++; @@ -2823,30 +2836,33 @@ prop_filter_compile(struct prop_filter *pfilter, char *filter) /* We should not have anything but whitespace left after closing '"' */ if (*p != '\0' && strspn(p, " \t\n") != strlen(p)) { logerror("property value parse error"); - return (-1); + goto error; } if (pfilter->cmp_type == FILT_CMP_REGEX) { pfilter->pflt_re = calloc(1, sizeof(*pfilter->pflt_re)); if (pfilter->pflt_re == NULL) { logerror("RE calloc() error"); - free(pfilter->pflt_re); - return (-1); + goto error; } if (pfilter->cmp_flags & FILT_FLAG_ICASE) re_flags |= REG_ICASE; if (regcomp(pfilter->pflt_re, filter, re_flags) != 0) { logerror("RE compilation error"); - free(pfilter->pflt_re); - return (-1); + goto error; } } else { pfilter->pflt_strval = strdup(filter); pfilter->pflt_strlen = strlen(filter); } - return (0); - + free(filter_begpos); + return (pfilter); +error: + free(filter_begpos); + free(pfilter->pflt_re); + free(pfilter); + return (NULL); } /* @@ -2860,8 +2876,7 @@ cfline(const char *line, const char *prog, const char *host, struct addrinfo hints, *res; int error, i, pri; const char *p, *q; - char *bp, *pfilter_dup; - char buf[LINE_MAX], ebuf[100]; + char *bp, buf[LINE_MAX], ebuf[100]; bool syncfile; dprintf("cfline(\"%s\", f, \"%s\", \"%s\", \"%s\")\n", line, prog, @@ -2908,24 +2923,11 @@ cfline(const char *line, const char *prog, const char *host, } if (pfilter) { - f->f_prop_filter = calloc(1, sizeof(*(f->f_prop_filter))); + f->f_prop_filter = prop_filter_compile(pfilter); if (f->f_prop_filter == NULL) { - logerror("pfilter calloc"); + logerror("filter compile error"); exit(1); } - if (*pfilter == '*') - f->f_prop_filter->prop_type = FILT_PROP_NOOP; - else { - pfilter_dup = strdup(pfilter); - if (pfilter_dup == NULL) { - logerror("strdup"); - exit(1); - } - if (prop_filter_compile(f->f_prop_filter, pfilter_dup)) { - logerror("filter compile error"); - exit(1); - } - } } /* scan through the list of selectors */