8025667: Warning from b62 for hotspot.agent.src.os.solaris.proc: use after free

Wed, 04 Mar 2015 02:46:07 -0800

author
dsamersoff
date
Wed, 04 Mar 2015 02:46:07 -0800
changeset 7613
28e75d810c6e
parent 7611
1f60a119863a
child 7614
96c46dd53027

8025667: Warning from b62 for hotspot.agent.src.os.solaris.proc: use after free
Summary: move free call few lines down
Reviewed-by: dholmes, sspitsyn

agent/src/os/solaris/proc/saproc.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/agent/src/os/solaris/proc/saproc.cpp	Mon Mar 02 11:08:09 2015 +0100
     1.2 +++ b/agent/src/os/solaris/proc/saproc.cpp	Wed Mar 04 02:46:07 2015 -0800
     1.3 @@ -661,30 +661,30 @@
     1.4    // read FileMapHeader
     1.5    size_t n = read(fd, pheader, sizeof(struct FileMapHeader));
     1.6    if (n != sizeof(struct FileMapHeader)) {
     1.7 -    free(pheader);
     1.8 -    close(fd);
     1.9      char errMsg[ERR_MSG_SIZE];
    1.10      sprintf(errMsg, "unable to read shared archive file map header from %s", classes_jsa);
    1.11 +    close(fd);
    1.12 +    free(pheader);
    1.13      THROW_NEW_DEBUGGER_EXCEPTION_(errMsg, 1);
    1.14    }
    1.15  
    1.16    // check file magic
    1.17    if (pheader->_magic != 0xf00baba2) {
    1.18 -    free(pheader);
    1.19 -    close(fd);
    1.20      char errMsg[ERR_MSG_SIZE];
    1.21      sprintf(errMsg, "%s has bad shared archive magic 0x%x, expecting 0xf00baba2",
    1.22                     classes_jsa, pheader->_magic);
    1.23 +    close(fd);
    1.24 +    free(pheader);
    1.25      THROW_NEW_DEBUGGER_EXCEPTION_(errMsg, 1);
    1.26    }
    1.27  
    1.28    // check version
    1.29    if (pheader->_version != CURRENT_ARCHIVE_VERSION) {
    1.30 -    free(pheader);
    1.31 -    close(fd);
    1.32      char errMsg[ERR_MSG_SIZE];
    1.33      sprintf(errMsg, "%s has wrong shared archive version %d, expecting %d",
    1.34                     classes_jsa, pheader->_version, CURRENT_ARCHIVE_VERSION);
    1.35 +    close(fd);
    1.36 +    free(pheader);
    1.37      THROW_NEW_DEBUGGER_EXCEPTION_(errMsg, 1);
    1.38    }
    1.39  

mercurial