Skip to content

Commit

Permalink
8286705: GCC 12 reports use-after-free potential bugs
Browse files Browse the repository at this point in the history
Reviewed-by: kbarrett
  • Loading branch information
YaSuenag committed May 15, 2022
1 parent 63bd3b7 commit 0e4bece
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/java.base/share/native/libjli/parse_manifest.c
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -288,8 +288,8 @@ find_positions(int fd, Byte *eb, jlong* base_offset, jlong* censtart)
for (cp = &buffer[bytes - ENDHDR]; cp >= &buffer[0]; cp--)
if (ENDSIG_AT(cp) && (cp + ENDHDR + ENDCOM(cp) == endpos)) {
(void) memcpy(eb, cp, ENDHDR);
free(buffer);
pos = flen - (endpos - cp);
free(buffer);
return find_positions64(fd, eb, pos, base_offset, censtart);
}
free(buffer);
Expand Down
7 changes: 5 additions & 2 deletions src/jdk.jpackage/linux/native/applauncher/LinuxPackage.c
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand All @@ -25,6 +25,7 @@

#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
#include <errno.h>
#include <linux/limits.h>
Expand Down Expand Up @@ -123,6 +124,7 @@ static int popenCommand(const char* cmdlineFormat, const char* arg,
int callbackMode = POPEN_CALLBACK_USE;
int exitCode = -1;
int c;
ptrdiff_t char_offset;

cmdline = malloc(cmdlineLenth + 1 /* \0 */);
if (!cmdline) {
Expand Down Expand Up @@ -171,13 +173,14 @@ static int popenCommand(const char* cmdlineFormat, const char* arg,
if (strBufNextChar == strBufEnd) {
/* Double buffer size */
strBufCapacity = strBufCapacity * 2 + 1;
char_offset = strBufNextChar - strBufBegin;
strNewBufBegin = realloc(strBufBegin, strBufCapacity);
if (!strNewBufBegin) {
JP_LOG_ERRNO;
goto cleanup;
}

strBufNextChar = strNewBufBegin + (strBufNextChar - strBufBegin);
strBufNextChar = strNewBufBegin + char_offset;
strBufEnd = strNewBufBegin + strBufCapacity;
strBufBegin = strNewBufBegin;
}
Expand Down

0 comments on commit 0e4bece

Please sign in to comment.