Hello,

</snip>
> >    326          tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0,
> > 
> > kt looks quite uninitialized here
> 
> It looks like the intent was something like this?
> 
> Index: pf_table.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pf_table.c,v
> retrieving revision 1.138
> diff -u -p -U7 -r1.138 pf_table.c
> --- pf_table.c        16 Nov 2021 20:51:31 -0000      1.138
> +++ pf_table.c        22 Nov 2021 00:23:39 -0000
> @@ -317,16 +317,14 @@ pfr_add_addrs(struct pfr_table *tbl, str
>       struct pfr_addr          ad;
>       int                      i, rv, xadd = 0;
>       time_t                   tzero = gettime();
>  
>       ACCEPT_FLAGS(flags, PFR_FLAG_DUMMY | PFR_FLAG_FEEDBACK);
>       if (pfr_validate_table(tbl, 0, flags & PFR_FLAG_USERIOCTL))
>               return (EINVAL);
> -     if (kt->pfrkt_flags & PFR_TFLAG_CONST)
> -             return (EPERM);
>       tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0,
>           !(flags & PFR_FLAG_USERIOCTL));
>       if (tmpkt == NULL)
>               return (ENOMEM);
>       SLIST_INIT(&workq);
>       SLIST_INIT(&ioq);
>       for (i = 0; i < size; i++) {
> @@ -346,14 +344,19 @@ pfr_add_addrs(struct pfr_table *tbl, str
>       NET_LOCK();
>       PF_LOCK();
>       kt = pfr_lookup_table(tbl);
>       if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE)) {
>               PF_UNLOCK();
>               NET_UNLOCK();
>               senderr(ESRCH);
> +     }
> +     if (kt->pfrkt_flags & PFR_TFLAG_CONST) {
> +             PF_UNLOCK();
> +             NET_UNLOCK();
> +             senderr(EPERM);
>       }
>       SLIST_FOREACH(ke, &ioq, pfrke_ioq) {
>               pfr_kentry_kif_ref(ke);
>               p = pfr_lookup_kentry(kt, ke, 1);
>               q = pfr_lookup_kentry(tmpkt, ke, 1);
>               if (flags & PFR_FLAG_FEEDBACK) {
>                       if (q != NULL)

    sure, diff above is correct. thanks for looking at it.

OK sashan

Reply via email to