Renaud Allard <[email protected]> wrote:
> netgroup_mkdb(8) calls abort() when _ng_parse() returns
> _NG_ERROR for a malformed netgroup entry.
> 
> The switch in ng_load() at netgroup_mkdb.c:213 handles
> _NG_NONE, _NG_NAME, and _NG_GROUP, but not _NG_ERROR (-1).
> A truncated or malformed netgroup entry causes _ng_parse() to
> return _NG_ERROR, which falls through to the default case:
> 
>   default:
>       abort();
> 
> A 28-byte input reproduces the crash:
> 
>   mygroup (host1, 1, dn1) (hos
> 
> Confirmed on OpenBSD 7.8/arm64 with the system binary.
> 
> Fix: handle _NG_ERROR with errx(), matching the existing
> error handling at line 263 for other parse failures.
> 
> Found by AFL++ fuzzing.

makes sense to me; okay op@ if someone wants to commit it.

> Index: usr.sbin/netgroup_mkdb/netgroup_mkdb.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/netgroup_mkdb/netgroup_mkdb.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 netgroup_mkdb.c
> --- usr.sbin/netgroup_mkdb/netgroup_mkdb.c    4 Jan 2023 13:00:11 -0000       
> 1.24
> +++ usr.sbin/netgroup_mkdb/netgroup_mkdb.c
> @@ -272,6 +272,9 @@ ng_load(const char *fname)
>                               }
>                               break;
> 
> +                     case _NG_ERROR:
> +                             errx(1, "syntax error in %s", fname);
> +
>                       default:
>                               abort();
>                               break;


Reply via email to