diff --git a/lib/libcam/camlib.c b/lib/libcam/camlib.c index 7c2a6cdc3ecb..1c76303a8c8b 100644 --- a/lib/libcam/camlib.c +++ b/lib/libcam/camlib.c @@ -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);