Skip to content
Snippets Groups Projects
Commit d3abdf0b authored by Sean Bright's avatar Sean Bright Committed by Kevin Harwell
Browse files

stasis_recording: Perform a complete match on requested filename.

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
parent 686c386b
No related branches found
No related tags found
3 merge requests!138Merge branch asterisk-20.3.0 into devel properly,!123Merge asterisk '20.3.0' into devel,!118Draft: manager: AOC-S support for AOCMessage
......@@ -130,6 +130,7 @@ static int split_path(const char *path, char **dir, char **file)
struct match_recording_data {
const char *file;
size_t length;
char *file_with_ext;
};
......@@ -160,7 +161,9 @@ static int handle_find_recording(const char *dir_name, const char *filename, voi
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;
}
......@@ -186,6 +189,7 @@ static char *find_recording(const char *dir_name, const char *file)
{
struct match_recording_data data = {
.file = file,
.length = strlen(file),
.file_with_ext = NULL
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment