Using the length of a file found on the filesystem rather than the
file being requested could result in filenames whose names are
substrings of another to be erroneously matched.
We now ensure a complete comparison before returning a positive
result.
ASTERISK-29960 #close
Change-Id: Id3ffc77681b9b75b8569062f3d952a128a21c71a
struct match_recording_data {
const char *file;
+ size_t length;
char *file_with_ext;
};
int num;
/* If not a recording or the names do not match the keep searching */
- if (!(num = is_recording(filename)) || strncmp(data->file, filename, num)) {
+ if (!(num = is_recording(filename))
+ || data->length != num
+ || strncmp(data->file, filename, num)) {
return 0;
}
{
struct match_recording_data data = {
.file = file,
+ .length = strlen(file),
.file_with_ext = NULL
};