Skip to content

Commit

Permalink
Merge pull request #148 from lkundrak/lr/double-free
Browse files Browse the repository at this point in the history
pcm: avoid calling pcm_hw->close() twice
  • Loading branch information
Taylor Holberton committed Apr 10, 2020
2 parents e05e532 + 00f5aa1 commit cb1d5fa
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/pcm.c
Expand Up @@ -898,7 +898,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
if (!pcm->snd_node || pcm_type != SND_NODE_TYPE_PLUGIN) {
oops(pcm, -ENODEV, "no device (hw/plugin) for card(%u), device(%u)",
card, device);
return pcm;
goto fail_close;
}
pcm->ops = &plug_ops;
pcm->fd = pcm->ops->open(card, device, flags, &pcm->data, pcm->snd_node);
Expand All @@ -907,7 +907,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
if (pcm->fd < 0) {
oops(pcm, errno, "cannot open device (%u) for card (%u)",
device, card);
return pcm;
goto fail_close;
}

pcm->flags = flags;
Expand Down Expand Up @@ -954,9 +954,8 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
if (pcm->snd_node)
snd_utils_close_dev_node(pcm->snd_node);
#endif
pcm->ops->close(pcm->data);
pcm->fd = -1;
return pcm;
pcm_close(pcm);
return &bad_pcm;
}

/** Checks if a PCM file has been opened without error.
Expand Down

0 comments on commit cb1d5fa

Please sign in to comment.