]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
media: vidtv: mux: Add check and kfree for kstrdup
authorJiasheng Jiang <jiasheng@iscas.ac.cn>
Mon, 19 Jun 2023 08:12:02 +0000 (16:12 +0800)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Sat, 7 Oct 2023 08:55:45 +0000 (10:55 +0200)
Add check for the return value of kstrdup() and return the error
if it fails in order to avoid NULL pointer dereference.
Moreover, use kfree() in the later error handling in order to avoid
memory leak.

Fixes: c2f78f0cb294 ("media: vidtv: psi: add a Network Information Table (NIT)")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/test-drivers/vidtv/vidtv_mux.c

index b51e6a3b8cbeb5652752f8def1dcc01fe7e9efc4..f99878eff7aceac019bed70af1d93dd4582df510 100644 (file)
@@ -504,13 +504,16 @@ struct vidtv_mux *vidtv_mux_init(struct dvb_frontend *fe,
        m->priv = args->priv;
        m->network_id = args->network_id;
        m->network_name = kstrdup(args->network_name, GFP_KERNEL);
+       if (!m->network_name)
+               goto free_mux_buf;
+
        m->timing.current_jiffies = get_jiffies_64();
 
        if (args->channels)
                m->channels = args->channels;
        else
                if (vidtv_channels_init(m) < 0)
-                       goto free_mux_buf;
+                       goto free_mux_network_name;
 
        /* will alloc data for pmt_sections after initializing pat */
        if (vidtv_channel_si_init(m) < 0)
@@ -527,6 +530,8 @@ free_channel_si:
        vidtv_channel_si_destroy(m);
 free_channels:
        vidtv_channels_destroy(m);
+free_mux_network_name:
+       kfree(m->network_name);
 free_mux_buf:
        vfree(m->mux_buf);
 free_mux: