Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8250863

Build error with GCC 10 in NetworkInterface.c and k_standard.c

XMLWordPrintable

    • b09

        https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-June/067445.html

        Koichi Sakata <sakatakui@oss.nttdata.com> reported:

        I tried to build OpenJDK fastdebug with GCC 10.1 on Ubuntu 18.04, but I
        saw some compiler warnings as follows:

        /home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/: In
        function '__j__kernel_standard':
        /home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19:
        error: 'exc.retval' may be used uninitialized in this function
        [-Werror=maybe-uninitialized]
           743 | return exc.retval;
               | ~~~^~~~~~~

        In file included from /usr/include/string.h:494,
                          from
        /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:30:
        In function 'strncpy',
             inlined from 'getFlags' at
        /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:1362:5,
             inlined from 'addif' at
        /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13:
        /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error:
        '__builtin_strncpy' output may be truncated copying 15 bytes from a
        string of length 15 [-Werror=stringop-truncation]
           106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos
        (__dest));
               | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        I can resolve them with the following patch. I believe it fixes those
        potential bugs, so I'd like to contribute it.
        (Our company has signed OCA.)

        Thanks,
        Koichi

        ===== PATCH =====
        diff -r 20d92fe3ac52 src/java.base/share/native/libfdlibm/k_standard.c
        --- a/src/java.base/share/native/libfdlibm/k_standard.c Tue Jun 16
        03:16:41 2020 +0000
        +++ b/src/java.base/share/native/libfdlibm/k_standard.c Thu Jun 18
        07:08:50 2020 +0900
        @@ -739,6 +739,10 @@
                                  errno = EDOM;
                          }
                          break;
        + default:
        + exc.retval = zero;
        + errno = EINVAL;
        + break;
                  }
                  return exc.retval;
          }
        diff -r 20d92fe3ac52 src/java.base/unix/native/libnet/NetworkInterface.c
        --- a/src/java.base/unix/native/libnet/NetworkInterface.c Tue Jun
        16 03:16:41 2020 +0000
        +++ b/src/java.base/unix/native/libnet/NetworkInterface.c Thu Jun
        18 07:08:50 2020 +0900
        @@ -1296,7 +1296,10 @@
          static int getIndex(int sock, const char *name) {
              struct ifreq if2;
              memset((char *)&if2, 0, sizeof(if2));
        - strncpy(if2.ifr_name, name, sizeof(if2.ifr_name) - 1);
        + if (sizeof(if2.ifr_name) < sizeof(name)) {
        + return -1;
        + }
        + strcpy(if2.ifr_name, name);

              if (ioctl(sock, SIOCGIFINDEX, (char *)&if2) < 0) {
                  return -1;
        @@ -1359,7 +1362,10 @@
          static int getFlags(int sock, const char *ifname, int *flags) {
              struct ifreq if2;
              memset((char *)&if2, 0, sizeof(if2));
        - strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1);
        + if (sizeof(if2.ifr_name) < sizeof(ifname)) {
        + return -1;
        + }
        + strcpy(if2.ifr_name, ifname);

              if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) {
                  return -1;

              ysuenaga Yasumasa Suenaga
              ysuenaga Yasumasa Suenaga
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: