ImageViewer: Fix buffer overflow
np_file is a buffer of size MAX_PATH. After removing only the file name component and leaving the rest of the path, the available space may not be sufficient for appending another file name (possibly of size MAX_PATH itself) to it. This can occur after a file of acceptable length is opened in ImageViewer, and you then advance to another file whose path (including the file name) is longer than MAX_PATH. Change-Id: Ideadd9451359bd5735bce92fca5d983e61f300e9
This commit is contained in:
parent
1c66e97522
commit
e71a441762
1 changed files with 5 additions and 1 deletions
|
@ -195,7 +195,11 @@ static int change_filename(int direct)
|
||||||
return PLUGIN_ERROR;
|
return PLUGIN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
rb->strcpy(rb->strrchr(np_file, '/')+1, file_pt[curfile]);
|
size_t np_file_length = rb->strlen(np_file);
|
||||||
|
size_t np_file_name_length = rb->strlen(rb->strrchr(np_file, '/')+1);
|
||||||
|
size_t avail_length = sizeof(np_file) - (np_file_length - np_file_name_length);
|
||||||
|
|
||||||
|
rb->snprintf(rb->strrchr(np_file, '/')+1, avail_length, "%s", file_pt[curfile]);
|
||||||
|
|
||||||
return PLUGIN_OTHER;
|
return PLUGIN_OTHER;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue