ALSA: emux: stop if copy_from_user() fails
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 31 Mar 2017 13:53:40 +0000 (16:53 +0300)
committerTakashi Iwai <tiwai@suse.de>
Fri, 31 Mar 2017 14:23:52 +0000 (16:23 +0200)
If we can't fill the "patch" struct because "count" is too small (it can
be as low as 4 bytes) or because copy_from_user() failed, then just
return instead of using unintialized data.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/synth/emux/emux_oss.c

index ac75816ada7c31b133586693e5c73a41dc79348f..850fab4a8f3b5d4a17f51f9a4521fbd0cf624709 100644 (file)
@@ -225,9 +225,9 @@ snd_emux_load_patch_seq_oss(struct snd_seq_oss_arg *arg, int format,
        else if (format == SNDRV_OSS_SOUNDFONT_PATCH) {
                struct soundfont_patch_info patch;
                if (count < (int)sizeof(patch))
-                       rc = -EINVAL;
+                       return -EINVAL;
                if (copy_from_user(&patch, buf, sizeof(patch)))
-                       rc = -EFAULT;
+                       return -EFAULT;
                if (patch.type >= SNDRV_SFNT_LOAD_INFO &&
                    patch.type <= SNDRV_SFNT_PROBE_DATA)
                        rc = snd_soundfont_load(emu->sflist, buf, count, SF_CLIENT_NO(p->chset.port));