mirror of https://github.com/MidnightCommander/mc
Ticket #4560: extfs: fix segfault om enter to deleted archive.
* (extfs_open_and_read_archive): fix NULL dereference if extfs_open_archive() doesn't create an error. * (extfs_open_archive): create an error message when mc_open() returns -1. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
7e80ab4dd6
commit
e4c80b5d13
|
@ -531,7 +531,10 @@ extfs_open_archive (int fstype, const char *name, struct extfs_super_t **pparc,
|
||||||
if (info->need_archive)
|
if (info->need_archive)
|
||||||
{
|
{
|
||||||
if (mc_stat (name_vpath, &mystat) == -1)
|
if (mc_stat (name_vpath, &mystat) == -1)
|
||||||
|
{
|
||||||
|
mc_propagate_error (error, 0, "%s", unix_error_string (errno));
|
||||||
goto ret;
|
goto ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (!vfs_file_is_local (name_vpath))
|
if (!vfs_file_is_local (name_vpath))
|
||||||
{
|
{
|
||||||
|
@ -737,10 +740,15 @@ extfs_open_and_read_archive (int fstype, const char *name, struct extfs_super_t
|
||||||
const extfs_plugin_info_t *info;
|
const extfs_plugin_info_t *info;
|
||||||
|
|
||||||
info = &g_array_index (extfs_plugins, extfs_plugin_info_t, fstype);
|
info = &g_array_index (extfs_plugins, extfs_plugin_info_t, fstype);
|
||||||
|
if (error == NULL)
|
||||||
|
message (D_ERROR, MSG_ERROR, _("Cannot open %s archive\n%s"), info->prefix, name);
|
||||||
|
else
|
||||||
|
{
|
||||||
message (D_ERROR, MSG_ERROR, _("Cannot open %s archive\n%s:\n%s"), info->prefix, name,
|
message (D_ERROR, MSG_ERROR, _("Cannot open %s archive\n%s:\n%s"), info->prefix, name,
|
||||||
error->message);
|
error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = extfs_read_archive (pip, a, &error);
|
result = extfs_read_archive (pip, a, &error);
|
||||||
|
|
Loading…
Reference in New Issue