forked from enlightenment/efl
ecore_x: Check if we have data
data could be NULL and size == 0, so check for this. Fixes CID 1039264
This commit is contained in:
parent
04e0a6d95e
commit
f22f861f61
|
@ -760,10 +760,7 @@ _ecore_x_selection_parser_files(const char *target,
|
||||||
int format EINA_UNUSED)
|
int format EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecore_X_Selection_Data_Files *sel;
|
Ecore_X_Selection_Data_Files *sel;
|
||||||
char *t, *data = _data;
|
char *data = _data;
|
||||||
int i, is;
|
|
||||||
char *tmp;
|
|
||||||
char **t2;
|
|
||||||
|
|
||||||
if (strcmp(target, "text/uri-list") &&
|
if (strcmp(target, "text/uri-list") &&
|
||||||
strcmp(target, "_NETSCAPE_URL"))
|
strcmp(target, "_NETSCAPE_URL"))
|
||||||
|
@ -773,67 +770,76 @@ _ecore_x_selection_parser_files(const char *target,
|
||||||
if (!sel) return NULL;
|
if (!sel) return NULL;
|
||||||
ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_files_free;
|
ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_files_free;
|
||||||
|
|
||||||
if (data && data[size - 1])
|
if (data && (size > 0))
|
||||||
{
|
{
|
||||||
/* Isn't nul terminated */
|
int i, is;
|
||||||
size++;
|
char *tmp;
|
||||||
t = realloc(data, size);
|
char **t2;
|
||||||
if (!t)
|
|
||||||
|
if (data[size - 1])
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
/* Isn't nul terminated */
|
||||||
|
size++;
|
||||||
|
t = realloc(data, size);
|
||||||
|
if (!t)
|
||||||
|
{
|
||||||
|
free(sel);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
data = t;
|
||||||
|
data[size - 1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = malloc(size);
|
||||||
|
if (!tmp)
|
||||||
{
|
{
|
||||||
free(sel);
|
free(sel);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
data = t;
|
i = 0;
|
||||||
data[size - 1] = 0;
|
is = 0;
|
||||||
}
|
while ((is < size) && (data[is]))
|
||||||
|
|
||||||
tmp = malloc(size);
|
|
||||||
if (!tmp)
|
|
||||||
{
|
|
||||||
free(sel);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
i = 0;
|
|
||||||
is = 0;
|
|
||||||
while ((is < size) && (data[is]))
|
|
||||||
{
|
|
||||||
if ((i == 0) && (data[is] == '#'))
|
|
||||||
for (; ((data[is]) && (data[is] != '\n')); is++) ;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if ((data[is] != '\r') &&
|
if ((i == 0) && (data[is] == '#'))
|
||||||
(data[is] != '\n'))
|
for (; ((data[is]) && (data[is] != '\n')); is++) ;
|
||||||
tmp[i++] = data[is++];
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while ((data[is] == '\r') || (data[is] == '\n'))
|
if ((data[is] != '\r') &&
|
||||||
is++;
|
(data[is] != '\n'))
|
||||||
tmp[i] = 0;
|
tmp[i++] = data[is++];
|
||||||
sel->num_files++;
|
else
|
||||||
t2 = realloc(sel->files, sel->num_files * sizeof(char *));
|
|
||||||
if (t2)
|
|
||||||
{
|
{
|
||||||
sel->files = t2;
|
while ((data[is] == '\r') || (data[is] == '\n'))
|
||||||
sel->files[sel->num_files - 1] = strdup(tmp);
|
is++;
|
||||||
|
tmp[i] = 0;
|
||||||
|
sel->num_files++;
|
||||||
|
t2 = realloc(sel->files, sel->num_files * sizeof(char *));
|
||||||
|
if (t2)
|
||||||
|
{
|
||||||
|
sel->files = t2;
|
||||||
|
sel->files[sel->num_files - 1] = strdup(tmp);
|
||||||
|
}
|
||||||
|
tmp[0] = 0;
|
||||||
|
i = 0;
|
||||||
}
|
}
|
||||||
tmp[0] = 0;
|
|
||||||
i = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (i > 0)
|
||||||
if (i > 0)
|
|
||||||
{
|
|
||||||
tmp[i] = 0;
|
|
||||||
sel->num_files++;
|
|
||||||
t2 = realloc(sel->files, sel->num_files * sizeof(char *));
|
|
||||||
if (t2)
|
|
||||||
{
|
{
|
||||||
sel->files = t2;
|
tmp[i] = 0;
|
||||||
sel->files[sel->num_files - 1] = strdup(tmp);
|
sel->num_files++;
|
||||||
|
t2 = realloc(sel->files, sel->num_files * sizeof(char *));
|
||||||
|
if (t2)
|
||||||
|
{
|
||||||
|
sel->files = t2;
|
||||||
|
sel->files[sel->num_files - 1] = strdup(tmp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
free(tmp);
|
free(tmp);
|
||||||
|
}
|
||||||
free(data);
|
free(data);
|
||||||
|
|
||||||
ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_FILES;
|
ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_FILES;
|
||||||
|
|
Loading…
Reference in New Issue