]> git.alsa-project.org Git - alsa-tools.git/commitdiff
Fix for segmentation fault in envy24control
authorJaroslav Kysela <perex@perex.cz>
Tue, 26 Jul 2005 12:32:24 +0000 (12:32 +0000)
committerJaroslav Kysela <perex@perex.cz>
Tue, 26 Jul 2005 12:32:24 +0000 (12:32 +0000)
a user has written he has a segmentation fault if he use the profiles
management. He has used some older version of alsa-tools with previous FC
releases until now and then this problem didn't exists.
I have found a array boundary fault in my code for strstr_icase_blank().
From: Dirk Kalis <dirk.kalis@t-online.de>

envy24control/strstr_icase_blank.c

index d58a88024c28a2f807894185165c10adddb65e4e..af44854e1cc38263a798f18b341b2d8cdf2219cc 100644 (file)
@@ -59,7 +59,7 @@ int strstr_icase_blank(const char * const string1, const char * const string2)
        {
                if ((pos_first_non_blank < 0) && (!isblank(search_string[i])))
                        pos_first_non_blank = i;
-               search_string[i] = toupper(search_string[i]);
+               search_string[i] = (char)toupper(search_string[i]);
        }
 
        // replace blanks in search string with SEP_CHAR to compare without blanks
@@ -91,7 +91,7 @@ int strstr_icase_blank(const char * const string1, const char * const string2)
        while (position < strlen(string1))
        {
                strncpy(line, (string1 + (position * sizeof(char))), MAX_SEARCH_FIELD_LENGTH);
-               line[MAX_SEARCH_FIELD_LENGTH] = '\0';
+               line[MAX_SEARCH_FIELD_LENGTH - 1] = '\0';
                pos_first_non_blank = -1;
                for (i = 0; i < strlen(line); i++)
                {