mirror of
https://github.com/opnsense/src.git
synced 2026-04-29 18:32:49 -04:00
Fix race in case of device destruction.
During device destruction it is possible that open() succeed, but fdevname() return NULL, that can't be assigned to string variable. Fix that by adding explicit NULL check. Also while there switch from fdevname() to fdevname_r(). Sponsored by: iXsystems, Inc. MFC after: 2 weeks
This commit is contained in:
parent
8cca7b7f28
commit
e49d3eb403
1 changed files with 6 additions and 1 deletions
|
|
@ -277,6 +277,7 @@ Event::GetTimestamp() const
|
|||
bool
|
||||
Event::DevPath(std::string &path) const
|
||||
{
|
||||
char buf[SPECNAMELEN + 1];
|
||||
string devName;
|
||||
|
||||
if (!DevName(devName))
|
||||
|
|
@ -288,7 +289,11 @@ Event::DevPath(std::string &path) const
|
|||
return (false);
|
||||
|
||||
/* Normalize the device name in case the DEVFS event is for a link. */
|
||||
devName = fdevname(devFd);
|
||||
if (fdevname_r(devFd, buf, sizeof(buf)) == NULL) {
|
||||
close(devFd);
|
||||
return (false);
|
||||
}
|
||||
devName = buf;
|
||||
path = _PATH_DEV + devName;
|
||||
|
||||
close(devFd);
|
||||
|
|
|
|||
Loading…
Reference in a new issue