Fix possible buffer overrun
This commit is contained in:
+15
-12
@@ -2735,9 +2735,10 @@ boolean secure;
|
|||||||
tmp->fromfile = from_file;
|
tmp->fromfile = from_file;
|
||||||
tmp->secure = secure;
|
tmp->secure = secure;
|
||||||
tmp->origline[0] = '\0';
|
tmp->origline[0] = '\0';
|
||||||
if (sourcename && sourcename[0])
|
if (sourcename && sourcename[0]) {
|
||||||
Strcpy(tmp->source, sourcename);
|
(void) strncpy(tmp->source, sourcename, sizeof(tmp->source)-1);
|
||||||
else
|
tmp->source[sizeof(tmp->source)-1] = '\0';
|
||||||
|
} else
|
||||||
tmp->source[0] = '\0';
|
tmp->source[0] = '\0';
|
||||||
|
|
||||||
tmp->next = config_error_data;
|
tmp->next = config_error_data;
|
||||||
@@ -2748,19 +2749,21 @@ STATIC_OVL boolean
|
|||||||
config_error_nextline(line)
|
config_error_nextline(line)
|
||||||
const char *line;
|
const char *line;
|
||||||
{
|
{
|
||||||
if (!config_error_data)
|
struct _config_error_frame *ced = config_error_data;
|
||||||
|
|
||||||
|
if (!ced)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (config_error_data->num_errors
|
if (ced->num_errors && ced->secure)
|
||||||
&& config_error_data->secure)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
config_error_data->line_num++;
|
ced->line_num++;
|
||||||
config_error_data->origline_shown = FALSE;
|
ced->origline_shown = FALSE;
|
||||||
if (line && line[0])
|
if (line && line[0]) {
|
||||||
Strcpy(config_error_data->origline, line);
|
strncpy(ced->origline, line, sizeof(ced->origline)-1);
|
||||||
else
|
ced->origline[sizeof(ced->origline)-1] = '\0';
|
||||||
config_error_data->origline[0] = '\0';
|
} else
|
||||||
|
ced->origline[0] = '\0';
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user