Make sure you don't have a file descriptor leak for the 'real'

underlying CAM device. This needs to be checked not only in
the open routine, but the device->fd has to be initialized
as well.

PR:		28688
Submitted (partially) by:	T. William Wells <bill@twwells.com>
MFC after:	2 weeks
This commit is contained in:
Matt Jacob 2001-07-04 07:43:10 +00:00
parent d79bee64d0
commit 3d09a65d42
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=79183

View File

@ -554,7 +554,7 @@ cam_real_open_device(const char *path, int flags, struct cam_device *device,
char newpath[MAXPATHLEN+1];
char *func_name = "cam_real_open_device";
union ccb ccb;
int fd, malloced_device = 0;
int fd = -1, malloced_device = 0;
/*
* See if the user wants us to malloc a device for him.
@ -567,6 +567,7 @@ cam_real_open_device(const char *path, int flags, struct cam_device *device,
strerror(errno));
return(NULL);
}
device->fd = -1;
malloced_device = 1;
}
@ -691,6 +692,9 @@ cam_real_open_device(const char *path, int flags, struct cam_device *device,
crod_bailout:
if (fd >= 0)
close(fd);
if (malloced_device)
free(device);