freebsd-ports/audio/gmixer/files/patch-ac
Tilman Keskinoz 33d3d91ed6 Add a patch, that fixes a Coredump. From the PR:
"volctrls array is only initialized for the first 17 devices, various array
buffers were allocated to SOUND_MIXER_NRDEVICES and around that line 295,
that SOUND_MIXER_NRDEVICES was also used as upper limit in for loop.
This turned out to be problem, because in my machine that variable seems
to have value 25"

PR:		38560
Submitted by:	Juha Ylitalo <jylitalo@iki.fi>
Approved by:	Maintainer timeout (8 Months)
2003-01-18 16:08:21 +00:00

39 lines
1 KiB
Text

--- patch-ac begins here ---
--- gmixer.c 2002/05/26 05:09:08 1.1
+++ gmixer.c 2002/05/26 05:21:05
@@ -378,6 +378,27 @@
exit(0);
}
+void fill_volctrls ()
+{
+ int i;
+ char str[3];
+
+ /* if you raise upper limit beyond 100, you have to make str longer. */
+ for (i = 17; i < SOUND_MIXER_NRDEVICES && i < 100 ; i++ )
+ {
+ snprintf (str, 3, "%2d", i);
+ volctrls[i].mixer_id = (gpointer) str;
+ volctrls[i].vol_widget = NULL;
+ volctrls[i].right_widget = NULL;
+ volctrls[i].enable_widget = NULL;
+ volctrls[i].rec_widget = NULL;
+ volctrls[i].stereo_widget = NULL;
+ volctrls[i].vol_left = NULL;
+ volctrls[i].vol_right = NULL;
+ volctrls[i].xpm = mix_unknown_xpm;
+ }
+}
+
int main (int argc, char *argv[])
{
char *homedir;
@@ -385,6 +406,7 @@
char *default_dev = "/dev/mixer";
int i;
g_print ("gmixer 0.98 (22.2.1999)\nCopyleft (C) 1998,1999 - Sergey Kiselev <sergey@junior.technion.ac.il>\n");
+ fill_volctrls();
homedir = getenv("HOME");
snprintf (rcfile, NAME_LEN, "%s/.gmixerrc", homedir);
mixer_dev = default_dev;