···11251125 * removes the extension of filename (if it doesn't start with a .)
11261126 * puts the result in buffer
11271127 */
11281128-char *strip_extension(const char *filename, char *buffer)
11281128+char *strip_extension(char* buffer, int buffer_size, const char *filename)
11291129{
11301130- int dotpos;
11311130 char *dot = strrchr(filename, '.');
11311131+ int len;
11321132+11331133+ if (buffer_size <= 0)
11341134+ {
11351135+ return NULL;
11361136+ }
11371137+11381138+ buffer_size--; /* Make room for end nil */
11391139+11321140 if (dot != 0 && filename[0] != '.')
11331141 {
11341134- dotpos = dot - filename;
11351135- strncpy(buffer, filename, dotpos);
11361136- buffer[dotpos] = '\0';
11421142+ len = dot - filename;
11431143+ len = MIN(len, buffer_size);
11441144+ strncpy(buffer, filename, len);
11371145 }
11381146 else
11391139- strcpy(buffer, filename);
11471147+ {
11481148+ len = buffer_size;
11491149+ strncpy(buffer, filename, buffer_size);
11501150+ }
11511151+11521152+ buffer[len] = 0;
11531153+11401154 return buffer;
11411155}
+1-1
apps/misc.h
···122122 * removes the extension of filename (if it doesn't start with a .)
123123 * puts the result in buffer
124124 */
125125-char *strip_extension(const char *filename, char *buffer);
125125+char *strip_extension(char* buffer, int buffer_size, const char *filename);
126126127127#endif /* MISC_H */
+1-1
apps/recorder/albumart.c
···124124 albumlen = id3->album ? strlen(id3->album) : 0;
125125126126 /* the first file we look for is one specific to the track playing */
127127- strip_extension(trackname, path);
127127+ strip_extension(path, sizeof(path) - strlen(size_string) - 4, trackname);
128128 strcat(path, size_string);
129129 strcat(path, ".bmp");
130130 found = file_exists(path);