diff options
author | jhb <jhb@FreeBSD.org> | 2005-03-24 21:20:25 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-03-24 21:20:25 +0000 |
commit | e04fe1a3ead71e88c4e8a7271bac402b2c53f40b (patch) | |
tree | a83c3bd29dd00f7112c9d1f0ca45840bf2647a35 /sys/kern/subr_hints.c | |
parent | 127c0209cbd49dabdd5fda40333ec1710b76ac60 (diff) | |
download | FreeBSD-src-e04fe1a3ead71e88c4e8a7271bac402b2c53f40b.zip FreeBSD-src-e04fe1a3ead71e88c4e8a7271bac402b2c53f40b.tar.gz |
Don't set ret_namelen and ret_resnamelen in res_find() unless both the
corresponding pointer to the buffer (ret_name and ret_resname) is non-NULL
to avoid possible NULL pointer derefs.
Reported by: Coverity via sam
Diffstat (limited to 'sys/kern/subr_hints.c')
-rw-r--r-- | sys/kern/subr_hints.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/subr_hints.c b/sys/kern/subr_hints.c index 87d1e82..d4f5cc8 100644 --- a/sys/kern/subr_hints.c +++ b/sys/kern/subr_hints.c @@ -174,7 +174,7 @@ res_find(int *line, int *startln, if (ret_name) *ret_name = s; s = index(s, '.') + 1; /* start of unit */ - if (ret_namelen) + if (ret_namelen && ret_name) *ret_namelen = s - *ret_name - 1; /* device length */ if (ret_unit) *ret_unit = r_unit; @@ -182,7 +182,7 @@ res_find(int *line, int *startln, if (ret_resname) *ret_resname = s; s = index(s, '=') + 1; /* start of value */ - if (ret_resnamelen) + if (ret_resnamelen && ret_resname) *ret_resnamelen = s - *ret_resname - 1; /* value len */ if (ret_value) *ret_value = s; |