diff -Nru v4l2loopback-0.12.5/debian/changelog v4l2loopback-0.12.5/debian/changelog --- v4l2loopback-0.12.5/debian/changelog 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/changelog 2021-07-09 18:08:29.000000000 +0800 @@ -1,3 +1,9 @@ +v4l2loopback (0.12.5-1ubuntu2) impish; urgency=low + + * Fix coverity errors. (LP: #1930208) + + -- You-Sheng Yang Fri, 09 Jul 2021 18:08:29 +0800 + v4l2loopback (0.12.5-1ubuntu1) hirsute; urgency=medium * Support client usage notification via V4l2 Event API (LP: #1921474) diff -Nru v4l2loopback-0.12.5/debian/patches/0006-UBUNTU-SAUCE-event-support-V4L2_EVENT_PRI_CLIENT_USA.patch v4l2loopback-0.12.5/debian/patches/0006-UBUNTU-SAUCE-event-support-V4L2_EVENT_PRI_CLIENT_USA.patch --- v4l2loopback-0.12.5/debian/patches/0006-UBUNTU-SAUCE-event-support-V4L2_EVENT_PRI_CLIENT_USA.patch 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0006-UBUNTU-SAUCE-event-support-V4L2_EVENT_PRI_CLIENT_USA.patch 2021-07-09 17:26:21.000000000 +0800 @@ -1,7 +1,6 @@ From: You-Sheng Yang Date: Thu, 13 Aug 2020 23:21:05 +0800 -Subject: UBUNTU: SAUCE: event: support - V4L2_EVENT_PRI_CLIENT_USAGE +Subject: UBUNTU: SAUCE: event: support V4L2_EVENT_PRI_CLIENT_USAGE Signed-off-by: You-Sheng Yang --- diff -Nru v4l2loopback-0.12.5/debian/patches/0007-compliance-stop-declaring-V4L2_CAP_VIDEO_M2M-capabil.patch v4l2loopback-0.12.5/debian/patches/0007-compliance-stop-declaring-V4L2_CAP_VIDEO_M2M-capabil.patch --- v4l2loopback-0.12.5/debian/patches/0007-compliance-stop-declaring-V4L2_CAP_VIDEO_M2M-capabil.patch 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0007-compliance-stop-declaring-V4L2_CAP_VIDEO_M2M-capabil.patch 2021-07-09 17:26:21.000000000 +0800 @@ -18,8 +18,7 @@ This change removes all declarations of M2M support. Signed-off-by: You-Sheng Yang -(backported from -https://github.com/vicamo/v4l2loopback/commit/9a77eb691f1db37cce268ef58ad763f1e2f5a619) +(backported from commit 9a77eb691f1db37cce268ef58ad763f1e2f5a619) Signed-off-by: You-Sheng Yang --- v4l2loopback.c | 7 ------- diff -Nru v4l2loopback-0.12.5/debian/patches/0008-compliance-fix-vidioc_enum_frameintervals-in-output-.patch v4l2loopback-0.12.5/debian/patches/0008-compliance-fix-vidioc_enum_frameintervals-in-output-.patch --- v4l2loopback-0.12.5/debian/patches/0008-compliance-fix-vidioc_enum_frameintervals-in-output-.patch 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0008-compliance-fix-vidioc_enum_frameintervals-in-output-.patch 2021-07-09 17:26:21.000000000 +0800 @@ -6,8 +6,7 @@ reasonable value here. 1000 fps should be enough for everybody. Signed-off-by: You-Sheng Yang -(backported from -https://github.com/vicamo/v4l2loopback/commit/b5272ea59663f35d009a623a2ce4d2137ffcff06) +(backported from commit b5272ea59663f35d009a623a2ce4d2137ffcff06) Signed-off-by: You-Sheng Yang --- v4l2loopback.c | 37 +++++++++++++++++++++---------------- diff -Nru v4l2loopback-0.12.5/debian/patches/0009-compliance-fix-enum-frame-sizes-intervals-errors.patch v4l2loopback-0.12.5/debian/patches/0009-compliance-fix-enum-frame-sizes-intervals-errors.patch --- v4l2loopback-0.12.5/debian/patches/0009-compliance-fix-enum-frame-sizes-intervals-errors.patch 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0009-compliance-fix-enum-frame-sizes-intervals-errors.patch 2021-07-09 17:26:21.000000000 +0800 @@ -5,8 +5,7 @@ This change checks frame size/format from user input. Signed-off-by: You-Sheng Yang -(cherry picked from -https://github.com/vicamo/v4l2loopback/commit/80639c9fc1ca06ad5b7a1013ccd9ad12866fd807) +(cherry picked from commit 80639c9fc1ca06ad5b7a1013ccd9ad12866fd807) Signed-off-by: You-Sheng Yang --- v4l2loopback.c | 16 +++++++++++++++- diff -Nru v4l2loopback-0.12.5/debian/patches/0010-compliance-fix-fmtdesc.type-was-modified-error.patch v4l2loopback-0.12.5/debian/patches/0010-compliance-fix-fmtdesc.type-was-modified-error.patch --- v4l2loopback-0.12.5/debian/patches/0010-compliance-fix-fmtdesc.type-was-modified-error.patch 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0010-compliance-fix-fmtdesc.type-was-modified-error.patch 2021-07-09 17:26:22.000000000 +0800 @@ -9,8 +9,7 @@ input field and should not be modified by kernel driver. Signed-off-by: You-Sheng Yang -(cherry picked from -https://github.com/vicamo/v4l2loopback/commit/a4b049bb0c9bf3a49418ff238ad7b74e0d024bd2) +(cherry picked from commit a4b049bb0c9bf3a49418ff238ad7b74e0d024bd2) Signed-off-by: You-Sheng Yang --- v4l2loopback.c | 1 - diff -Nru v4l2loopback-0.12.5/debian/patches/0011-v4l2loopback.c-Fix-unchecked-return-value-in-vidioc_.patch v4l2loopback-0.12.5/debian/patches/0011-v4l2loopback.c-Fix-unchecked-return-value-in-vidioc_.patch --- v4l2loopback-0.12.5/debian/patches/0011-v4l2loopback.c-Fix-unchecked-return-value-in-vidioc_.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0011-v4l2loopback.c-Fix-unchecked-return-value-in-vidioc_.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,60 @@ +From: Tim Gardner +Date: Thu, 27 May 2021 11:25:41 -0600 +Subject: v4l2loopback.c: Fix unchecked return value in vidioc_s_fmt_out() + +Coverity detected an unchecked return code: + +1025static int vidioc_s_fmt_out(struct file *file, void *priv, struct v4l2_format *fmt) +1026{ +1027 struct v4l2_loopback_device *dev; +1028 char buf[5]; +1029 int ret; + 1. Condition debug > 1, taking true branch. +1030 MARK(); +1031 +1032 dev = v4l2loopback_getdevice(file); +1033 ret = vidioc_try_fmt_out(file, priv, fmt); +1034 + 2. Condition debug > 0, taking true branch. +1035 dprintk("s_fmt_out(%d) %d...%d\n", ret, dev->ready_for_capture, dev->pix_format.sizeimage); +1036 +1037 buf[4] = 0; + 3. Condition debug > 0, taking true branch. +1038 dprintk("outFOURCC=%s\n", fourcc2str(dev->pix_format.pixelformat, buf)); +1039 + 4. Condition ret < 0, taking false branch. +1040 if (ret < 0) +1041 return ret; +1042 + 5. Condition !dev->ready_for_capture, taking true branch. +1043 if (!dev->ready_for_capture) { +1044 dev->buffer_size = PAGE_ALIGN(dev->pix_format.sizeimage); +1045 fmt->fmt.pix.sizeimage = dev->buffer_size; + +CID 114125 (#1 of 1): Unchecked return value (CHECKED_RETURN) +6. check_return: Calling allocate_buffers without checking return value (as is done elsewhere 3 out of 5 times). +1046 allocate_buffers(dev); +1047 } +1048 return ret; +1049} + +Signed-off-by: Tim Gardner +(cherry picked from commit b3f1f668493e2c24d1aba9bb4e9ea8626895d718) +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index c9b1445..18bca75 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -1043,7 +1043,7 @@ static int vidioc_s_fmt_out(struct file *file, void *priv, struct v4l2_format *f + if (!dev->ready_for_capture) { + dev->buffer_size = PAGE_ALIGN(dev->pix_format.sizeimage); + fmt->fmt.pix.sizeimage = dev->buffer_size; +- allocate_buffers(dev); ++ ret = allocate_buffers(dev); + } + return ret; + } diff -Nru v4l2loopback-0.12.5/debian/patches/0012-v4l2loopback.c-resource-leak-in-v4l2_loopback_open.patch v4l2loopback-0.12.5/debian/patches/0012-v4l2loopback.c-resource-leak-in-v4l2_loopback_open.patch --- v4l2loopback-0.12.5/debian/patches/0012-v4l2loopback.c-resource-leak-in-v4l2_loopback_open.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0012-v4l2loopback.c-resource-leak-in-v4l2_loopback_open.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,28 @@ +From: Tim Gardner +Date: Thu, 27 May 2021 11:37:33 -0600 +Subject: v4l2loopback.c: resource leak in v4l2_loopback_open() + +Coverity discovered a resource leak in an error path. + +CID 114123 (#2 of 2): Resource leak (RESOURCE_LEAK) +9. leaked_storage: Variable opener going out of scope leaks the storage it points to. + +Signed-off-by: Tim Gardner +(cherry picked from commit afd718e905cde1a62f399462bb27dde2b95d48fd) +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index 18bca75..245ea92 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -1984,6 +1984,7 @@ static int v4l2_loopback_open(struct file *file) + + if (r < 0) { + dprintk("timeout image allocation failed\n"); ++ kfree(opener); + return r; + } + } diff -Nru v4l2loopback-0.12.5/debian/patches/0013-v4l2loopback.c-NULL-dereference-in-free_buffers.patch v4l2loopback-0.12.5/debian/patches/0013-v4l2loopback.c-NULL-dereference-in-free_buffers.patch --- v4l2loopback-0.12.5/debian/patches/0013-v4l2loopback.c-NULL-dereference-in-free_buffers.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0013-v4l2loopback.c-NULL-dereference-in-free_buffers.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,29 @@ +From: Tim Gardner +Date: Thu, 27 May 2021 12:03:57 -0600 +Subject: v4l2loopback.c: NULL dereference in free_buffers() + +Coverity found a possible NULL dereference after NULL check. + +CID 114122 (#1 of 1): Dereference after null check (FORWARD_NULL) +5. var_deref_op: Dereferencing null pointer dev. + +Signed-off-by: Tim Gardner +(cherry picked from commit fc85f86bf74299c6238691fdafd5bae06c6e8c93) +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index 245ea92..957eba3 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -2106,6 +2106,8 @@ static int free_buffers(struct v4l2_loopback_device *dev) + { + MARK(); + dprintk("freeing image@%p for dev:%p\n", dev ? dev->image : NULL, dev); ++ if (!dev) ++ return 0; + if (dev->image) { + vfree(dev->image); + dev->image = NULL; diff -Nru v4l2loopback-0.12.5/debian/patches/0014-coverity-fix-unchecked-return-value.patch v4l2loopback-0.12.5/debian/patches/0014-coverity-fix-unchecked-return-value.patch --- v4l2loopback-0.12.5/debian/patches/0014-coverity-fix-unchecked-return-value.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0014-coverity-fix-unchecked-return-value.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,37 @@ +From: You-Sheng Yang +Date: Mon, 31 May 2021 16:32:10 +0800 +Subject: UBUNTU: SAUCE: coverity: fix unchecked return value + +(backported from umlaeute/v4l2loopback/pull/438 commit +243477215131b5d6413c05045d28e6943c11ad4d) +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index 957eba3..a1a2518 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -2345,7 +2345,9 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) + init_vdev(dev->vdev, nr); + dev->vdev->v4l2_dev = &dev->v4l2_dev; + init_capture_param(&dev->capture_param); +- set_timeperframe(dev, &dev->capture_param.timeperframe); ++ ret = set_timeperframe(dev, &dev->capture_param.timeperframe); ++ if (ret) ++ goto error; + dev->keep_format = 0; + dev->sustain_framerate = 0; + dev->buffers_number = max_buffers; +@@ -2405,7 +2407,9 @@ static int v4l2_loopback_init(struct v4l2_loopback_device *dev, int nr) + + dev->buffer_size = PAGE_ALIGN(dev->pix_format.sizeimage); + dprintk("buffer_size = %ld (=%d)\n", dev->buffer_size, dev->pix_format.sizeimage); +- allocate_buffers(dev); ++ ret = allocate_buffers(dev); ++ if (ret) ++ goto error; + + init_waitqueue_head(&dev->read_event); + diff -Nru v4l2loopback-0.12.5/debian/patches/0015-coverity-fix-null-pointer-dereference.patch v4l2loopback-0.12.5/debian/patches/0015-coverity-fix-null-pointer-dereference.patch --- v4l2loopback-0.12.5/debian/patches/0015-coverity-fix-null-pointer-dereference.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0015-coverity-fix-null-pointer-dereference.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,54 @@ +From: You-Sheng Yang +Date: Mon, 31 May 2021 17:14:21 +0800 +Subject: UBUNTU: SAUCE: coverity: fix null pointer dereference + +(backported from umlaeute/v4l2loopback/pull/438 commit +8245707199d6651fa1bad91929a015a6ffeebc3e) +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index a1a2518..4f63aaf 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -515,6 +515,9 @@ static ssize_t attr_store_format(struct device *cd, + struct v4l2_loopback_device *dev = v4l2loopback_cd2dev(cd); + int fps_num = 0, fps_den = 1; + ++ if (!dev) ++ return -ENODEV; ++ + /* only fps changing is supported */ + if (sscanf(buf, "@%d/%d", &fps_num, &fps_den) > 0) { + struct v4l2_fract f = { +@@ -536,6 +539,9 @@ static ssize_t attr_show_buffers(struct device *cd, + { + struct v4l2_loopback_device *dev = v4l2loopback_cd2dev(cd); + ++ if (!dev) ++ return -ENODEV; ++ + return sprintf(buf, "%d\n", dev->used_buffers); + } + +@@ -546,6 +552,9 @@ static ssize_t attr_show_maxopeners(struct device *cd, + { + struct v4l2_loopback_device *dev = v4l2loopback_cd2dev(cd); + ++ if (!dev) ++ return -ENODEV; ++ + return sprintf(buf, "%d\n", dev->max_openers); + } + +@@ -559,6 +568,8 @@ static ssize_t attr_store_maxopeners(struct device *cd, + return -EINVAL; + + dev = v4l2loopback_cd2dev(cd); ++ if (!dev) ++ return -ENODEV; + + if (dev->max_openers == curr) + return len; diff -Nru v4l2loopback-0.12.5/debian/patches/0016-coverity-use-strlcpy-instead-of-strcpy.patch v4l2loopback-0.12.5/debian/patches/0016-coverity-use-strlcpy-instead-of-strcpy.patch --- v4l2loopback-0.12.5/debian/patches/0016-coverity-use-strlcpy-instead-of-strcpy.patch 1970-01-01 08:00:00.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/0016-coverity-use-strlcpy-instead-of-strcpy.patch 2021-07-09 17:26:22.000000000 +0800 @@ -0,0 +1,26 @@ +From: You-Sheng Yang +Date: Fri, 9 Jul 2021 17:21:20 +0800 +Subject: UBUNTU: SAUCE: coverity: use strlcpy instead of strcpy + +CID 81706 (#1 of 1): Copy into fixed size buffer (STRING_OVERFLOW) +4. fixed_size_dest: You might overrun the 32-character fixed-size string + q->name by copying cnf->name without checking the length. + +Signed-off-by: You-Sheng Yang +--- + v4l2loopback.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index 4f63aaf..c1ccd10 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -1199,7 +1199,7 @@ static int vidioc_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl * + if (!cnf) + BUG(); + +- strcpy(q->name, cnf->name); ++ strlcpy(q->name, cnf->name, sizeof(q->name)); + q->default_value=cnf->def; + q->type = cnf->type; + q->minimum = cnf->min; diff -Nru v4l2loopback-0.12.5/debian/patches/series v4l2loopback-0.12.5/debian/patches/series --- v4l2loopback-0.12.5/debian/patches/series 2021-03-29 17:02:42.000000000 +0800 +++ v4l2loopback-0.12.5/debian/patches/series 2021-07-09 17:26:42.000000000 +0800 @@ -8,3 +8,9 @@ 0008-compliance-fix-vidioc_enum_frameintervals-in-output-.patch 0009-compliance-fix-enum-frame-sizes-intervals-errors.patch 0010-compliance-fix-fmtdesc.type-was-modified-error.patch +0011-v4l2loopback.c-Fix-unchecked-return-value-in-vidioc_.patch +0012-v4l2loopback.c-resource-leak-in-v4l2_loopback_open.patch +0013-v4l2loopback.c-NULL-dereference-in-free_buffers.patch +0014-coverity-fix-unchecked-return-value.patch +0015-coverity-fix-null-pointer-dereference.patch +0016-coverity-use-strlcpy-instead-of-strcpy.patch