Camera3: Fix invalid file description check

0 is a valid file descriptor. Fix the code for checking
valid file descriptor.

This is a precautionary change.

Bug: 17113762
Change-Id: I65b206254eb63d888049b6daf650204b13afa444
Signed-off-by: Daniel Jarai <jaraidaniel@gmail.com>
This commit is contained in:
Shuzhen Wang 2014-09-30 13:21:11 -07:00 committed by Artem Borisov
parent 189f07281e
commit 480867917e
6 changed files with 30 additions and 24 deletions

View File

@ -326,7 +326,7 @@ int QCamera3HeapMemory::allocOneBuffer(QCamera3MemInfo &memInfo, int heap_id, in
int main_ion_fd = 0;
main_ion_fd = open("/dev/ion", O_RDONLY);
if (main_ion_fd <= 0) {
if (main_ion_fd < 0) {
ALOGE("Ion dev open failed: %s\n", strerror(errno));
goto ION_OPEN_FAILED;
}

View File

@ -254,7 +254,7 @@ int32_t mm_camera_open(mm_camera_obj_t *my_obj)
n_try--;
my_obj->ctrl_fd = open(dev_name, O_RDWR | O_NONBLOCK);
CDBG("%s: ctrl_fd = %d, errno == %d", __func__, my_obj->ctrl_fd, errno);
if((my_obj->ctrl_fd > 0) || (errno != EIO) || (n_try <= 0 )) {
if((my_obj->ctrl_fd >= 0) || (errno != EIO) || (n_try <= 0 )) {
CDBG_HIGH("%s: opened, break out while loop", __func__);
break;
}
@ -263,7 +263,7 @@ int32_t mm_camera_open(mm_camera_obj_t *my_obj)
usleep(sleep_msec * 1000);
}while (n_try > 0);
if (my_obj->ctrl_fd <= 0) {
if (my_obj->ctrl_fd < 0) {
CDBG_ERROR("%s: cannot open control fd of '%s' (%s)\n",
__func__, dev_name, strerror(errno));
rc = -1;
@ -276,7 +276,7 @@ int32_t mm_camera_open(mm_camera_obj_t *my_obj)
n_try--;
my_obj->ds_fd = mm_camera_socket_create(cam_idx, MM_CAMERA_SOCK_TYPE_UDP);
CDBG("%s: ds_fd = %d, errno = %d", __func__, my_obj->ds_fd, errno);
if((my_obj->ds_fd > 0) || (n_try <= 0 )) {
if((my_obj->ds_fd >= 0) || (n_try <= 0 )) {
CDBG("%s: opened, break out while loop", __func__);
break;
}
@ -285,7 +285,7 @@ int32_t mm_camera_open(mm_camera_obj_t *my_obj)
usleep(sleep_msec * 1000);
} while (n_try > 0);
if (my_obj->ds_fd <= 0) {
if (my_obj->ds_fd < 0) {
CDBG_ERROR("%s: cannot open domain socket fd of '%s'(%s)\n",
__func__, dev_name, strerror(errno));
rc = -1;
@ -315,13 +315,13 @@ int32_t mm_camera_open(mm_camera_obj_t *my_obj)
return rc;
on_error:
if (my_obj->ctrl_fd > 0) {
if (my_obj->ctrl_fd >= 0) {
close(my_obj->ctrl_fd);
my_obj->ctrl_fd = 0;
my_obj->ctrl_fd = -1;
}
if (my_obj->ds_fd > 0) {
if (my_obj->ds_fd >= 0) {
mm_camera_socket_close(my_obj->ds_fd);
my_obj->ds_fd = 0;
my_obj->ds_fd = -1;
}
/* we do not need to unlock cam_lock here before return
@ -354,13 +354,13 @@ int32_t mm_camera_close(mm_camera_obj_t *my_obj)
CDBG("%s : Close evt cmd Thread in Cam Close",__func__);
mm_camera_cmd_thread_release(&my_obj->evt_thread);
if(my_obj->ctrl_fd > 0) {
if(my_obj->ctrl_fd >= 0) {
close(my_obj->ctrl_fd);
my_obj->ctrl_fd = 0;
my_obj->ctrl_fd = -1;
}
if(my_obj->ds_fd > 0) {
if(my_obj->ds_fd >= 0) {
mm_camera_socket_close(my_obj->ds_fd);
my_obj->ds_fd = 0;
my_obj->ds_fd = -1;
}
pthread_mutex_destroy(&my_obj->msg_lock);

View File

@ -708,6 +708,7 @@ uint32_t mm_channel_add_stream(mm_channel_t *my_obj)
/* initialize stream object */
memset(stream_obj, 0, sizeof(mm_stream_t));
stream_obj->fd = -1;
stream_obj->my_hdl = mm_camera_util_generate_handler(idx);
stream_obj->ch_obj = my_obj;
pthread_mutex_init(&stream_obj->buf_lock, NULL);

View File

@ -1258,7 +1258,7 @@ uint8_t get_num_of_cameras()
int num_entities;
snprintf(dev_name, sizeof(dev_name), "/dev/media%d", num_media_devices);
dev_fd = open(dev_name, O_RDWR | O_NONBLOCK);
if (dev_fd <= 0) {
if (dev_fd < 0) {
CDBG("Done discovering media devices\n");
break;
}
@ -1268,14 +1268,14 @@ uint8_t get_num_of_cameras()
if (rc < 0) {
CDBG_ERROR("Error: ioctl media_dev failed: %s\n", strerror(errno));
close(dev_fd);
dev_fd = 0;
dev_fd = -1;
num_cameras = 0;
break;
}
if(strncmp(mdev_info.model, MSM_CAMERA_NAME, sizeof(mdev_info.model)) != 0) {
close(dev_fd);
dev_fd = 0;
dev_fd = -1;
continue;
}
@ -1302,7 +1302,7 @@ uint8_t get_num_of_cameras()
num_cameras++;
close(dev_fd);
dev_fd = 0;
dev_fd = -1;
}
g_cam_ctrl.num_cam = num_cameras;
@ -1386,6 +1386,8 @@ mm_camera_vtbl_t * camera_open(uint8_t camera_idx)
/* initialize camera obj */
memset(cam_obj, 0, sizeof(mm_camera_obj_t));
cam_obj->ctrl_fd = -1;
cam_obj->ds_fd = -1;
cam_obj->ref_count++;
cam_obj->my_hdl = mm_camera_util_generate_handler(camera_idx);
cam_obj->vtbl.camera_handle = cam_obj->my_hdl; /* set handler */

View File

@ -411,7 +411,7 @@ int32_t mm_stream_fsm_inited(mm_stream_t *my_obj,
mm_camera_util_get_dev_name(my_obj->ch_obj->cam_obj->my_hdl));
my_obj->fd = open(dev_name, O_RDWR | O_NONBLOCK);
if (my_obj->fd <= 0) {
if (my_obj->fd < 0) {
CDBG_ERROR("%s: open dev returned %d\n", __func__, my_obj->fd);
rc = -1;
break;
@ -424,7 +424,7 @@ int32_t mm_stream_fsm_inited(mm_stream_t *my_obj,
/* failed setting ext_mode
* close fd */
close(my_obj->fd);
my_obj->fd = 0;
my_obj->fd = -1;
break;
}
break;
@ -845,7 +845,7 @@ int32_t mm_stream_release(mm_stream_t *my_obj)
__func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
/* close fd */
if(my_obj->fd > 0)
if(my_obj->fd >= 0)
{
close(my_obj->fd);
}
@ -856,6 +856,7 @@ int32_t mm_stream_release(mm_stream_t *my_obj)
/* reset stream obj */
memset(my_obj, 0, sizeof(mm_stream_t));
my_obj->fd = -1;
return 0;
}

View File

@ -494,8 +494,8 @@ int32_t mm_camera_poll_thread_launch(mm_camera_poll_thread_t * poll_cb,
poll_cb->poll_type = poll_type;
poll_cb->pfds[0] = 0;
poll_cb->pfds[1] = 0;
poll_cb->pfds[0] = -1;
poll_cb->pfds[1] = -1;
rc = pipe(poll_cb->pfds);
if(rc < 0) {
CDBG_ERROR("%s: pipe open rc=%d\n", __func__, rc);
@ -544,10 +544,10 @@ int32_t mm_camera_poll_thread_release(mm_camera_poll_thread_t *poll_cb)
}
/* close pipe */
if(poll_cb->pfds[0]) {
if(poll_cb->pfds[0] >= 0) {
close(poll_cb->pfds[0]);
}
if(poll_cb->pfds[1]) {
if(poll_cb->pfds[1] >= 0) {
close(poll_cb->pfds[1]);
}
@ -556,6 +556,8 @@ int32_t mm_camera_poll_thread_release(mm_camera_poll_thread_t *poll_cb)
memset(poll_cb, 0, sizeof(mm_camera_poll_thread_t));
done:
pthread_mutex_unlock(&constr_destr_lock);
poll_cb->pfds[0] = -1;
poll_cb->pfds[1] = -1;
return rc;
}