http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51090

             Bug #: 51090
           Summary: libgfortran main.c missing NULL check on return value
                    from getenv()
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: j...@gcc.gnu.org


PATH is not set in an RTEMS environment so getenv("PATH") is returning NULL. 
Besides, there is no executable file on the target to do
_gfortrani_find_addr2line() on and this in runtime/main.c blows up.

void
find_addr2line (void)
{
#ifdef HAVE_ACCESS
#define A2L_LEN 10
  char *path = getenv ("PATH");
  size_t n = strlen (path);

It did not blow up before because the autoconf probe didn't find access().  I
went through addressing symbols RTEMS has but the autoconf probe didn't see.  

I have attached a proposed solution.  I haven't run every test but the first
few 100 are passing where the first test failed before.

Here is the backtrace.

getenv (name=0x8805dd30 "PATH")
    at /users/joel/test-gcc/gcc-svn/newlib/libc/stdlib/getenv.c:90
90        return _findenv_r (_REENT, name, &offset);
(gdb) 
87      {
(gdb) n
90        return _findenv_r (_REENT, name, &offset);
(gdb) 
87      {
(gdb) 
90        return _findenv_r (_REENT, name, &offset);
(gdb) 
91      }
(gdb) 
0x880036ec in _gfortrani_find_addr2line ()
(gdb) 
Single stepping until exit from function _gfortrani_find_addr2line,
which has no line number information.
mips-core: 1 byte read to unmapped address 0x0 at 0x8804e7d4

Program received signal SIGBUS, Bus error.
0x8804e7d4 in strlen ()

Reply via email to