Uninitialised memory read in gcc-2.95.2/gcc/cppexp.c
Martin Stromberg
Martin.Stromberg@lu.erisoft.se
Sun Mar 12 04:03:00 GMT 2000
Purify reports:
**** Purify instrumented /home/erieye/members/eplmst/gcc/gcc-2.95.2/obj/gcc/fix-header (pid 23948) ****
UMR: Uninitialized memory read (4 times):
* This is occurring while in:
cpp_parse_expr [cppexp.c:792]
eval_if_expression [cpplib.c:1617]
do_if [cpplib.c:1557]
handle_directive [cpplib.c:545]
cpp_get_token [cpplib.c:2132]
scan_decls [scan-decls.c:95]
* Reading 1 byte from 0xefffc73c on the stack.
* Address 0xefffc73c is 20 bytes past start of local variable "init_stack" in function cpp_parse_expr.
**** Purify instrumented /home/erieye/members/eplmst/gcc/gcc-2.95.2/obj/gcc/fix-header (pid 23948) ****
UMR: Uninitialized memory read:
* This is occurring while in:
cpp_parse_expr [cppexp.c:792]
eval_if_expression [cpplib.c:1617]
do_if [cpplib.c:1557]
handle_directive [cpplib.c:545]
cpp_get_token [cpplib.c:2132]
scan_decls [scan-decls.c:95]
* Reading 1 byte from 0xefffc73c on the stack.
* Address 0xefffc73c is 20 bytes past start of local variable "init_stack" in function cpp_parse_expr.
The file cppexp.c around line 792 looks like:
while (top->rprio > lprio)
{
HOST_WIDEST_INT v1 = top[-1].value, v2 = top[0].value;
int unsigned1 = top[-1].unsignedp, unsigned2 = top[0].unsignedp; /* This is line 792. */
top--;
if ((top[1].flags & LEFT_OPERAND_REQUIRED)
&& ! (top[0].flags & HAVE_VALUE))
{
cpp_error (pfile, "syntax error - missing left operand");
goto syntax_error;
}
Alas I don't understand this variable top. So somebody who does perhaps
can see what's amiss?
Right,
MartinS
More information about the Gcc-bugs
mailing list