ALSA: hdsp: silence a sprinft() overflow warning
Subsystems (2)
PATCH 1/1 ALSA: hdsp: silence a sprinft() overflow warning
card->shortname is a 32 char string so the sprintf() can theoretically overflow. snd_rawmidi_new() can accept strings up to 64 bytes long.
I have made the temporay buf[] array 40 bytes long and changed the sprintf() to snprintf().
sound/pci/rme9652/hdsp.c +2 -2
@@ -1526,7 +1526,7 @@ static struct snd_rawmidi_ops snd_hdsp_midi_inputstatic int snd_hdsp_create_midi (struct snd_card *card,struct hdsp *hdsp,int id) { -char buf[32 ]; +char buf[40 ]; hdsp->midi[id].id = id; hdsp->midi[id].rmidi =NULL ;
@@ -1537,7 +1537,7 @@ static int snd_hdsp_create_midi (struct snd_card *card, struct hdsp *hdsp, int i hdsp->midi[id].pending =0 ;spin_lock_init (&hdsp->midi[id].lock); -sprintf (buf,"%s MIDI %d" , card->shortname, id+1 ); +snprintf (buf,sizeof (buf),"%s MIDI %d" , card->shortname, id +1 );if (snd_rawmidi_new (card, buf, id,1 ,1 , &hdsp->midi[id].rmidi) <0 )return -1 ;
Ping?
regards,
dan carpenter
Quoted 30 lines · Dan Carpenter
card->shortnameis a 32 char string so thesprintf()can theoretically overflow.snd_rawmidi_new()can accept strings up to 64 bytes long.I have made the temporay buf[] array 40 bytes long and changed the
sprintf()tosnprintf().Signed-off-by Dan Carpenter <[email protected]>sound/pci/rme9652/hdsp.c +2
-2@@ -1526,7 +1526,7 @@ static struct snd_rawmidi_ops snd_hdsp_midi_input =static int snd_hdsp_create_midi (struct snd_card *card,struct hdsp *hdsp,int id) { -char buf[32 ]; +char buf[40 ]; hdsp->midi[id].id = id; hdsp->midi[id].rmidi =NULL ;@@ -1537,7 +1537,7 @@ static int snd_hdsp_create_midi (struct snd_card *card, struct hdsp *hdsp, int i hdsp->midi[id].pending =0 ;spin_lock_init (&hdsp->midi[id].lock); -sprintf (buf,"%s MIDI %d" , card->shortname, id+1 ); +snprintf (buf,sizeof (buf),"%s MIDI %d" , card->shortname, id +1 );if (snd_rawmidi_new (card, buf, id,1 ,1 , &hdsp->midi[id].rmidi) <0 )return -1 ;
Quoted 2 lines · Dan Carpenter
Ping?
I seem to have missed it. Could you resubmit?
thanks,
Takashi
Quoted 36 lines
regards,
dan carpenterQuoted 30 lines · Dan Carpenter
card->shortnameis a 32 char string so thesprintf()can theoretically overflow.snd_rawmidi_new()can accept strings up to 64 bytes long.I have made the temporay buf[] array 40 bytes long and changed the
sprintf()tosnprintf().Signed-off-by Dan Carpenter <[email protected]>sound/pci/rme9652/hdsp.c +2
-2@@ -1526,7 +1526,7 @@ static struct snd_rawmidi_ops snd_hdsp_midi_input =static int snd_hdsp_create_midi (struct snd_card *card,struct hdsp *hdsp,int id) { -char buf[32 ]; +char buf[40 ]; hdsp->midi[id].id = id; hdsp->midi[id].rmidi =NULL ;@@ -1537,7 +1537,7 @@ static int snd_hdsp_create_midi (struct snd_card *card, struct hdsp *hdsp, int i hdsp->midi[id].pending =0 ;spin_lock_init (&hdsp->midi[id].lock); -sprintf (buf,"%s MIDI %d" , card->shortname, id+1 ); +snprintf (buf,sizeof (buf),"%s MIDI %d" , card->shortname, id +1 );if (snd_rawmidi_new (card, buf, id,1 ,1 , &hdsp->midi[id].rmidi) <0 )return -1 ;
PATCH 1/1 ALSA: hdsp: silence a sprinft() overflow warning
card->shortname is a 32 char string so the sprintf() can theoretically overflow. snd_rawmidi_new() can accept strings up to 64 bytes long.
I have made the temporay buf[] array 40 bytes long and changed the sprintf() to snprintf().
sound/pci/rme9652/hdsp.c +2 -2
@@ -1526,7 +1526,7 @@ static struct snd_rawmidi_ops snd_hdsp_midi_input =static int snd_hdsp_create_midi (struct snd_card *card,struct hdsp *hdsp,int id) { -char buf[32 ]; +char buf[40 ]; hdsp->midi[id].id = id; hdsp->midi[id].rmidi =NULL ;
@@ -1537,7 +1537,7 @@ static int snd_hdsp_create_midi (struct snd_card *card, struct hdsp *hdsp, int i hdsp->midi[id].pending =0 ;spin_lock_init (&hdsp->midi[id].lock); -sprintf (buf,"%s MIDI %d" , card->shortname, id+1 ); +snprintf (buf,sizeof (buf),"%s MIDI %d" , card->shortname, id +1 );if (snd_rawmidi_new (card, buf, id,1 ,1 , &hdsp->midi[id].rmidi) <0 )return -1 ;
Takashi Iwai
AppliedQuoted 8 lines · Dan Carpenter
card->shortnameis a 32 char string so thesprintf()can theoretically overflow.snd_rawmidi_new()can accept strings up to 64 bytes long.I have made the temporay buf[] array 40 bytes long and changed the
sprintf()tosnprintf().Signed-off-by Dan Carpenter <[email protected]>
Applied, thanks.
Takashi
Quoted 24 lines
sound/pci/rme9652/hdsp.c +2
-2@@ -1526,7 +1526,7 @@ static struct snd_rawmidi_ops snd_hdsp_midi_input =static int snd_hdsp_create_midi (struct snd_card *card,struct hdsp *hdsp,int id) { -char buf[32 ]; +char buf[40 ]; hdsp->midi[id].id = id; hdsp->midi[id].rmidi =NULL ;@@ -1537,7 +1537,7 @@ static int snd_hdsp_create_midi (struct snd_card *card, struct hdsp *hdsp, int i hdsp->midi[id].pending =0 ;spin_lock_init (&hdsp->midi[id].lock); -sprintf (buf,"%s MIDI %d" , card->shortname, id+1 ); +snprintf (buf,sizeof (buf),"%s MIDI %d" , card->shortname, id +1 );if (snd_rawmidi_new (card, buf, id,1 ,1 , &hdsp->midi[id].rmidi) <0 )return -1 ;