Skip to content

Commit

Permalink
NuppelVideoRecorder: Fix coverity 1025902. Unchecked return value of …
Browse files Browse the repository at this point in the history
…ioctls. Several ioctls were unchecked, relating to enquing buffers, starting and stopping capture from hardware.
  • Loading branch information
stuartm committed Jun 15, 2013
1 parent e38f33f commit 89b6571
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions mythtv/libs/libmythtv/recorders/NuppelVideoRecorder.cpp
Expand Up @@ -1580,11 +1580,13 @@ void NuppelVideoRecorder::DoV4L2(void)
memset(buffers[i], 0, bufferlen[i]);
vbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
vbuf.index = i;
ioctl(fd, VIDIOC_QBUF, &vbuf);
if (ioctl(fd, VIDIOC_QBUF, &vbuf) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to enqueue capture buffer (VIDIOC_QBUF failed) " + ENO);
}

int turnon = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(fd, VIDIOC_STREAMON, &turnon);
if (ioctl(fd, VIDIOC_STREAMON, &turnon) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to start capture (VIDIOC_STREAMON failed) " + ENO);

struct timeval tv;
fd_set rdset;
Expand Down Expand Up @@ -1656,17 +1658,20 @@ void NuppelVideoRecorder::DoV4L2(void)
{
LOG(VB_GENERAL, LOG_ERR, LOC + "Resetting and re-queueing");
turnon = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(fd, VIDIOC_STREAMOFF, &turnon);
if (ioctl(fd, VIDIOC_STREAMOFF, &turnon) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to stop capture (VIDIOC_STREAMOFF failed) " + ENO);

for (uint i = 0; i < numbuffers; i++)
{
memset(buffers[i], 0, bufferlen[i]);
vbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
vbuf.index = i;
ioctl(fd, VIDIOC_QBUF, &vbuf);
if (ioctl(fd, VIDIOC_QBUF, &vbuf) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to enqueue capture buffer (VIDIOC_QBUF failed) " + ENO);
}

ioctl(fd, VIDIOC_STREAMON, &turnon);
if (ioctl(fd, VIDIOC_STREAMON, &turnon) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to start capture (VIDIOC_STREAMON failed) " + ENO);
resetcapture = false;
}

Expand Down Expand Up @@ -1744,12 +1749,14 @@ void NuppelVideoRecorder::DoV4L2(void)
}

vbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(fd, VIDIOC_QBUF, &vbuf);
if (ioctl(fd, VIDIOC_QBUF, &vbuf) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to enqueue capture buffer (VIDIOC_QBUF failed) " + ENO);
}

KillChildren();

ioctl(fd, VIDIOC_STREAMOFF, &turnon);
if (ioctl(fd, VIDIOC_STREAMOFF, &turnon) < 0)
LOG(VB_GENERAL, LOG_ERR, LOC + "unable to stop capture (VIDIOC_STREAMOFF failed) " + ENO);

for (uint i = 0; i < numbuffers; i++)
{
Expand Down

0 comments on commit 89b6571

Please sign in to comment.