Hello community, here is the log from the commit of package open-vm-tools for openSUSE:Factory checked in at 2020-09-03 01:13:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/open-vm-tools (Old) and /work/SRC/openSUSE:Factory/.open-vm-tools.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "open-vm-tools" Thu Sep 3 01:13:27 2020 rev:95 rq:830311 version:11.1.5 Changes: -------- --- /work/SRC/openSUSE:Factory/open-vm-tools/open-vm-tools.changes 2020-06-23 21:02:51.225505897 +0200 +++ /work/SRC/openSUSE:Factory/.open-vm-tools.new.3399/open-vm-tools.changes 2020-09-03 01:14:19.144474192 +0200 @@ -1,0 +2,16 @@ +Fri Aug 28 14:57:34 UTC 2020 - Kirk Allan <kal...@suse.com> + +- Update to 11.1.5 (build 16724464) (boo#1175573) + + This source release rolls up the SDMP fixes release post 11.1.0. + + Fix serveral Coverity reported issues. + + Address github issues: + https://github.com/vmware/open-vm-tools/issues/451 + https://github.com/vmware/open-vm-tools/issues/429 + https://github.com/vmware/open-vm-tools/issues/428 +- Drop unnecessary patch: + - gcc10-warning.patch + - sdmp-get-version.patch + - sdmp-netstat-to-ss.patch + - sdmp-warnings.patch + +------------------------------------------------------------------- Old: ---- gcc10-warning.patch open-vm-tools-11.1.0-16036546.tar.gz sdmp-get-version.patch sdmp-netstat-to-ss.patch sdmp-warnings.patch New: ---- open-vm-tools-11.1.5-16724464.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ open-vm-tools.spec ++++++ --- /var/tmp/diff_new_pack.LHp0w2/_old 2020-09-03 01:14:21.136474925 +0200 +++ /var/tmp/diff_new_pack.LHp0w2/_new 2020-09-03 01:14:21.144474928 +0200 @@ -40,8 +40,8 @@ Name: open-vm-tools %define subname open-vm-tools %define tarname open-vm-tools -%define bldnum 16036546 -Version: 11.1.0 +%define bldnum 16724464 +Version: 11.1.5 Release: 0 Summary: Open Virtual Machine Tools License: BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-only @@ -135,11 +135,7 @@ Supplements: modalias(pci:v000015ADd*sv*sd*bc*sc*i*) ExclusiveArch: %ix86 x86_64 #Upstream patches -Patch0: gcc10-warning.patch -Patch1: pam-vmtoolsd.patch -Patch2: sdmp-warnings.patch -Patch3: sdmp-get-version.patch -Patch4: sdmp-netstat-to-ss.patch +Patch0: pam-vmtoolsd.patch %if 0%{?suse_version} >= 1500 %systemd_ordering @@ -220,10 +216,6 @@ sed -i -e "s/\r//" README #Upstream patches %patch0 -p2 -%patch1 -p2 -%patch2 -p2 -%patch3 -p2 -%patch4 -p2 %build %if %{with_X} ++++++ open-vm-tools-11.1.0-16036546.tar.gz -> open-vm-tools-11.1.5-16724464.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/AUTHORS new/open-vm-tools-11.1.5-16724464/AUTHORS --- old/open-vm-tools-11.1.0-16036546/AUTHORS 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/AUTHORS 2020-08-10 15:51:05.000000000 +0200 @@ -59,3 +59,5 @@ Josh Paetzel FreeBSD has removed some vnops flags that have never been used. - https://github.com/vmware/open-vm-tools/pull/403 +Alexey Shabalin Add recognition of ALT Linux distributions + - https://github.com/vmware/open-vm-tools/pull/431 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/autom4te.cache/output.0 new/open-vm-tools-11.1.5-16724464/autom4te.cache/output.0 --- old/open-vm-tools-11.1.0-16036546/autom4te.cache/output.0 2020-04-15 07:06:28.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/autom4te.cache/output.0 2020-08-10 15:52:44.000000000 +0200 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.0. +@%:@ Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.5. @%:@ @%:@ Report bugs to <open-vm-tools-de...@lists.sourceforge.net>. @%:@ @@ -729,8 +729,8 @@ # Identity of this package. PACKAGE_NAME='open-vm-tools' PACKAGE_TARNAME='open-vm-tools' -PACKAGE_VERSION='11.1.0' -PACKAGE_STRING='open-vm-tools 11.1.0' +PACKAGE_VERSION='11.1.5' +PACKAGE_STRING='open-vm-tools 11.1.5' PACKAGE_BUGREPORT='open-vm-tools-de...@lists.sourceforge.net' PACKAGE_URL='' @@ -1666,7 +1666,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures open-vm-tools 11.1.0 to adapt to many kinds of systems. +\`configure' configures open-vm-tools 11.1.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1740,7 +1740,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of open-vm-tools 11.1.0:";; + short | recursive ) echo "Configuration of open-vm-tools 11.1.5:";; esac cat <<\_ACEOF @@ -1900,7 +1900,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -open-vm-tools configure 11.1.0 +open-vm-tools configure 11.1.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2592,7 +2592,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by open-vm-tools $as_me 11.1.0, which was +It was created by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5822,7 +5822,7 @@ # Define the identity of the package. PACKAGE='open-vm-tools' - VERSION='11.1.0' + VERSION='11.1.5' cat >>confdefs.h <<_ACEOF @@ -26079,7 +26079,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by open-vm-tools $as_me 11.1.0, which was +This file was extended by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -26136,7 +26136,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -open-vm-tools config.status 11.1.0 +open-vm-tools config.status 11.1.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/autom4te.cache/output.1 new/open-vm-tools-11.1.5-16724464/autom4te.cache/output.1 --- old/open-vm-tools-11.1.0-16036546/autom4te.cache/output.1 2020-04-15 07:06:29.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/autom4te.cache/output.1 2020-08-10 15:52:45.000000000 +0200 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.0. +@%:@ Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.5. @%:@ @%:@ Report bugs to <open-vm-tools-de...@lists.sourceforge.net>. @%:@ @@ -729,8 +729,8 @@ # Identity of this package. PACKAGE_NAME='open-vm-tools' PACKAGE_TARNAME='open-vm-tools' -PACKAGE_VERSION='11.1.0' -PACKAGE_STRING='open-vm-tools 11.1.0' +PACKAGE_VERSION='11.1.5' +PACKAGE_STRING='open-vm-tools 11.1.5' PACKAGE_BUGREPORT='open-vm-tools-de...@lists.sourceforge.net' PACKAGE_URL='' @@ -1666,7 +1666,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures open-vm-tools 11.1.0 to adapt to many kinds of systems. +\`configure' configures open-vm-tools 11.1.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1740,7 +1740,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of open-vm-tools 11.1.0:";; + short | recursive ) echo "Configuration of open-vm-tools 11.1.5:";; esac cat <<\_ACEOF @@ -1900,7 +1900,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -open-vm-tools configure 11.1.0 +open-vm-tools configure 11.1.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2592,7 +2592,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by open-vm-tools $as_me 11.1.0, which was +It was created by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5822,7 +5822,7 @@ # Define the identity of the package. PACKAGE='open-vm-tools' - VERSION='11.1.0' + VERSION='11.1.5' cat >>confdefs.h <<_ACEOF @@ -26075,7 +26075,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by open-vm-tools $as_me 11.1.0, which was +This file was extended by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -26132,7 +26132,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -open-vm-tools config.status 11.1.0 +open-vm-tools config.status 11.1.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/autom4te.cache/traces.1 new/open-vm-tools-11.1.5-16724464/autom4te.cache/traces.1 --- old/open-vm-tools-11.1.0-16036546/autom4te.cache/traces.1 2020-04-15 07:06:29.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/autom4te.cache/traces.1 2020-08-10 15:52:45.000000000 +0200 @@ -1,5 +1,5 @@ m4trace:aclocal.m4:1150: -1- m4_include([m4/vmtools.m4]) -m4trace:configure.ac:39: -1- AC_INIT([open-vm-tools], [11.1.0], [open-vm-tools-de...@lists.sourceforge.net]) +m4trace:configure.ac:39: -1- AC_INIT([open-vm-tools], [11.1.5], [open-vm-tools-de...@lists.sourceforge.net]) m4trace:configure.ac:39: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:39: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:39: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/configure new/open-vm-tools-11.1.5-16724464/configure --- old/open-vm-tools-11.1.0-16036546/configure 2020-04-15 07:06:28.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/configure 2020-08-10 15:52:44.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.0. +# Generated by GNU Autoconf 2.69 for open-vm-tools 11.1.5. # # Report bugs to <open-vm-tools-de...@lists.sourceforge.net>. # @@ -729,8 +729,8 @@ # Identity of this package. PACKAGE_NAME='open-vm-tools' PACKAGE_TARNAME='open-vm-tools' -PACKAGE_VERSION='11.1.0' -PACKAGE_STRING='open-vm-tools 11.1.0' +PACKAGE_VERSION='11.1.5' +PACKAGE_STRING='open-vm-tools 11.1.5' PACKAGE_BUGREPORT='open-vm-tools-de...@lists.sourceforge.net' PACKAGE_URL='' @@ -1666,7 +1666,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures open-vm-tools 11.1.0 to adapt to many kinds of systems. +\`configure' configures open-vm-tools 11.1.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1740,7 +1740,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of open-vm-tools 11.1.0:";; + short | recursive ) echo "Configuration of open-vm-tools 11.1.5:";; esac cat <<\_ACEOF @@ -1900,7 +1900,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -open-vm-tools configure 11.1.0 +open-vm-tools configure 11.1.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2592,7 +2592,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by open-vm-tools $as_me 11.1.0, which was +It was created by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5822,7 +5822,7 @@ # Define the identity of the package. PACKAGE='open-vm-tools' - VERSION='11.1.0' + VERSION='11.1.5' cat >>confdefs.h <<_ACEOF @@ -26075,7 +26075,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by open-vm-tools $as_me 11.1.0, which was +This file was extended by open-vm-tools $as_me 11.1.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -26132,7 +26132,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -open-vm-tools config.status 11.1.0 +open-vm-tools config.status 11.1.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/configure.ac new/open-vm-tools-11.1.5-16724464/configure.ac --- old/open-vm-tools-11.1.0-16036546/configure.ac 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/configure.ac 2020-08-10 15:51:05.000000000 +0200 @@ -35,10 +35,10 @@ ### Initialization ### -TOOLS_VERSION="11.1.0" +TOOLS_VERSION="11.1.5" AC_INIT( [open-vm-tools], - [11.1.0], + [11.1.5], [open-vm-tools-de...@lists.sourceforge.net]) # In order to make this configure script auto-detect situations where diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/file/fileTemp.c new/open-vm-tools-11.1.5-16724464/lib/file/fileTemp.c --- old/open-vm-tools-11.1.0-16036546/lib/file/fileTemp.c 2020-04-15 07:05:44.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/file/fileTemp.c 2020-08-10 15:51:56.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2011-2018 VMware, Inc. All rights reserved. + * Copyright (C) 2011-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -69,7 +69,7 @@ FileTempNum(Bool createTempFile, // IN: uint32 *var) // IN/OUT: { - ASSERT(var); + ASSERT(var != NULL); *var += (FileSimpleRandom() >> 8) & 0xFF; *var = (*var & ~0x1) | (createTempFile ? 1 : 0); @@ -82,10 +82,11 @@ * FileMakeTempEx2Work -- * * Create a temporary file or a directory. + * * If a temporary file is created successfully, then return an open file * descriptor to that file. * - * 'dir' specifies the directory in which to create the file. It + * 'dir' specifies the directory in which to create the object. It * must not end in a slash. * * 'createTempFile', if TRUE, then a temporary file will be created. If @@ -96,9 +97,9 @@ * 'dir' already be safe (the code will check this). * * 'createNameFunc' specifies the user-specified callback function that - * will be called to construct the fileName. 'createNameFuncData' will be + * will be called to construct a fileName. 'createNameFuncData' will be * passed everytime 'createNameFunc' is called. 'createNameFunc' - * should return the proper fileName. + * should return the dynamically allocated, proper fileName. * * Check the documentation for File_MakeTempHelperFunc. * @@ -106,7 +107,7 @@ * if a temporary file is created, then Open file descriptor or -1; * if a temporary directory is created, then 0 or -1; * If successful then presult points to a dynamically allocated - * string with the pathname of the temp file. + * string with the pathname of the temp object created. * * Side effects: * Creates the requested object when successful. Errno is set on error @@ -128,9 +129,10 @@ { uint32 i; - int fd = -1; + int fd; uint32 var = 0; - char *path = NULL; + + ASSERT(presult != NULL); if ((dir == NULL) || (createNameFunc == NULL)) { errno = EFAULT; @@ -138,16 +140,11 @@ return -1; } - ASSERT(presult); - *presult = NULL; for (i = 0; i < (MAX_INT32 / 2); i++) { - char *fileName; - - /* construct suffixed pathname to use */ - Posix_Free(path); - path = NULL; + char *objName; + char *pathName; /* * Files and directories are kept separate (odd and even respectfully). @@ -159,50 +156,53 @@ FileTempNum(createTempFile, &var); - fileName = (*createNameFunc)(var, createNameFuncData); - ASSERT(fileName); + objName = (*createNameFunc)(var, createNameFuncData); + ASSERT(objName != NULL); - /* construct base full pathname to use */ if (createTempFile) { - path = File_PathJoin(dir, fileName); - fd = Posix_Open(path, O_CREAT | O_EXCL | O_BINARY | O_RDWR, 0600); + pathName = File_PathJoin(dir, objName); + fd = Posix_Open(pathName, O_CREAT | O_EXCL | O_BINARY | O_RDWR, 0600); } else { if (makeSubdirSafe) { - path = File_MakeSafeTempSubdir(dir, fileName); - if (path != NULL) { - fd = 0; - } + pathName = File_MakeSafeTempSubdir(dir, objName); + fd = (pathName == NULL) ? -1 : 0; } else { - path = File_PathJoin(dir, fileName); - fd = Posix_Mkdir(path, 0700); + pathName = File_PathJoin(dir, objName); + fd = Posix_Mkdir(pathName, 0700); } } - Posix_Free(fileName); if (fd != -1) { - *presult = path; - path = NULL; + *presult = pathName; + + Posix_Free(objName); break; } + Posix_Free(pathName); + if (errno != EEXIST) { - Log(LGPFX" Failed to create temporary %s \"%s\", errno: %d.\n", + Log(LGPFX" Failed to create temporary %s; dir \"%s\", " + "objName \"%s\", errno %d\n", createTempFile ? "file" : "directory", - path, errno); + dir, objName, errno); + + Posix_Free(objName); goto exit; } + + Posix_Free(objName); } if (fd == -1) { - Warning(LGPFX" Failed to create temporary %s \"%s\": " + Warning(LGPFX" Failed to create temporary %s: " "The name space is full.\n", - createTempFile ? "file" : "directory", path); + createTempFile ? "file" : "directory"); errno = EAGAIN; } exit: - Posix_Free(path); return fd; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/include/buildNumber.h new/open-vm-tools-11.1.5-16724464/lib/include/buildNumber.h --- old/open-vm-tools-11.1.0-16036546/lib/include/buildNumber.h 2020-04-15 07:06:14.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/include/buildNumber.h 2020-08-10 15:52:30.000000000 +0200 @@ -1,12 +1,12 @@ #define BUILD_NUMBER \ - "build-16036546" + "build-16724464" #define BUILD_NUMBER_NUMERIC \ - 16036546 + 16724464 #define BUILD_NUMBER_NUMERIC_STRING \ - "16036546" + "16724464" #define PRODUCT_BUILD_NUMBER \ - "product-build-19887" + "product-build-22735" #define PRODUCT_BUILD_NUMBER_NUMERIC \ - 19887 + 22735 #define PRODUCT_BUILD_NUMBER_NUMERIC_STRING \ - "19887" + "22735" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/include/conf.h new/open-vm-tools-11.1.5-16724464/lib/include/conf.h --- old/open-vm-tools-11.1.0-16036546/lib/include/conf.h 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/include/conf.h 2020-08-10 15:51:36.000000000 +0200 @@ -303,6 +303,15 @@ #define CONFNAME_DISKINFO_REPORT_UUID "diskinfo-report-uuid" /** + * Avoid buggy USB driver when querying disks for UUID. + * Turning this on can result in a major delay if the vmdk is + * being replicated. See PR 2575285, 26539. + * + * @param boolean Set to true to work around buggy 3rd party driver. + */ +#define CONFNAME_DISKINFO_DRIVER_WORKAROUND "diskinfo-usb-workaround" + +/** * Report Linux disk device for vmdk mapping via vim. * * @param boolean Set to true to report devices to VMX. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/include/vm_tools_version.h new/open-vm-tools-11.1.5-16724464/lib/include/vm_tools_version.h --- old/open-vm-tools-11.1.0-16036546/lib/include/vm_tools_version.h 2020-04-15 07:05:49.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/include/vm_tools_version.h 2020-08-10 15:52:01.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 1998-2019 VMware, Inc. All rights reserved. + * Copyright (C) 1998-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -47,6 +47,7 @@ * reformating or changing macro names is being performed * please run the perl script to ensure it succeeds. */ +/* clang-format off */ /* @@ -1589,15 +1590,29 @@ #define TOOLS_VERSION_SLEDGEHAMMER_UPDATE1_V_BASE 5 #ifndef RC_INVOKED -#define TOOLS_VERSION_NEXT TOOLS_VERSION_TO_UINT(TOOLS_VERSION_NEXT_V) +#define TOOLS_VERSION_BALLPEENHAMMER_RELEASE TOOLS_VERSION_TO_UINT(TOOLS_VERSION_BALLPEENHAMMER_RELEASE_V) #endif /* RC_INVOKED */ -#define TOOLS_VERSION_NEXT_V_MJR 11 -#define TOOLS_VERSION_NEXT_V_MNR 1 -#define TOOLS_VERSION_NEXT_V_BASE 0 - -#define TOOLS_VERSION_CURRENT TOOLS_VERSION_NEXT -#define TOOLS_VERSION_CURRENT_STR TOOLS_VERSION_TO_STR(TOOLS_VERSION_NEXT) -#define TOOLS_VERSION_CURRENT_CSV TOOLS_VERSION_TO_CSV(TOOLS_VERSION_NEXT) +#define TOOLS_VERSION_BALLPEENHAMMER_RELEASE_V_MJR 11 +#define TOOLS_VERSION_BALLPEENHAMMER_RELEASE_V_MNR 1 +#define TOOLS_VERSION_BALLPEENHAMMER_RELEASE_V_BASE 0 + +#ifndef RC_INVOKED +#define TOOLS_VERSION_BALLPEENHAMMER_PATCH1 TOOLS_VERSION_TO_UINT(TOOLS_VERSION_BALLPEENHAMMER_PATCH1_V) +#endif /* RC_INVOKED */ +#define TOOLS_VERSION_BALLPEENHAMMER_PATCH1_V_MJR 11 +#define TOOLS_VERSION_BALLPEENHAMMER_PATCH1_V_MNR 1 +#define TOOLS_VERSION_BALLPEENHAMMER_PATCH1_V_BASE 1 + +#ifndef RC_INVOKED +#define TOOLS_VERSION_BALLPEENHAMMER_UPDATE1 TOOLS_VERSION_TO_UINT(TOOLS_VERSION_BALLPEENHAMMER_UPDATE1_V) +#endif /* RC_INVOKED */ +#define TOOLS_VERSION_BALLPEENHAMMER_UPDATE1_V_MJR 11 +#define TOOLS_VERSION_BALLPEENHAMMER_UPDATE1_V_MNR 1 +#define TOOLS_VERSION_BALLPEENHAMMER_UPDATE1_V_BASE 5 + +#define TOOLS_VERSION_CURRENT TOOLS_VERSION_BALLPEENHAMMER_UPDATE1 +#define TOOLS_VERSION_CURRENT_STR TOOLS_VERSION_TO_STR(TOOLS_VERSION_BALLPEENHAMMER_UPDATE1) +#define TOOLS_VERSION_CURRENT_CSV TOOLS_VERSION_TO_CSV(TOOLS_VERSION_BALLPEENHAMMER_UPDATE1) /* * The extended Tools version is the current Tools version with the @@ -1614,6 +1629,8 @@ #define TOOLS_VERSION_EXT_CURRENT_STR \ TOOLS_VERSION_CURRENT_STR "." PRODUCT_BUILD_NUMBER_NUMERIC_STRING +/* clang-format on */ + #endif /* VM_TOOLS_VERSION_H */ #endif /* defined(USE_GOBUILD_TOOLS_VERSION) && !defined(GOBUILD_TOOLS_VERSION_USED) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/include/vmware/guestrpc/tclodefs.h new/open-vm-tools-11.1.5-16724464/lib/include/vmware/guestrpc/tclodefs.h --- old/open-vm-tools-11.1.0-16036546/lib/include/vmware/guestrpc/tclodefs.h 2020-04-15 07:05:36.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/include/vmware/guestrpc/tclodefs.h 2020-08-10 15:51:44.000000000 +0200 @@ -65,6 +65,7 @@ #define TOOLSOPTION_LINK_ROOT_HGFS_SHARE "linkRootHgfsShare" #define TOOLSOPTION_ENABLE_MESSAGE_BUS_TUNNEL "enableMessageBusTunnel" #define TOOLSOPTION_GUEST_LOG_LEVEL "guestLogLevel" +#define TOOLSOPTION_ENABLE_APPINFO "enableAppInfo" /* * Auto-upgrade commands. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/misc/hostinfoPosix.c new/open-vm-tools-11.1.5-16724464/lib/misc/hostinfoPosix.c --- old/open-vm-tools-11.1.0-16036546/lib/misc/hostinfoPosix.c 2020-04-15 07:05:44.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/misc/hostinfoPosix.c 2020-08-10 15:51:57.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 1998-2019 VMware, Inc. All rights reserved. + * Copyright (C) 1998-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -184,6 +184,7 @@ /* KEEP SORTED! (sort -d) */ static const DistroInfo distroArray[] = { + { "ALT", "/etc/altlinux-release" }, { "Annvix", "/etc/annvix-release" }, { "Arch", "/etc/arch-release" }, { "Arklinux", "/etc/arklinux-release" }, @@ -804,8 +805,23 @@ * Returns distro information based on .vmx format (distroShort). * * Return value: - * Overwrited the short name if we recognise the OS. - * Otherwise leave the short name as it is. + * The default value of the "short name", upon entry to this routine, is + * the officially supported identification for a generic Linux + * (otherLinux). + * + * If the distro is officially supported (by VMware)- it's recognized + * the code of this routine - the "short name" will be overwritten with + * the officially supported "short name" of the distro. Only VMware adds + * distros and related codes to this routine. + * + * An unsupported "short name" will be ignored by the rest of the + * software stack. + * + * If the short name is not one of the officially support ones, the + * default value will be left in place. + * + * The "long name" and detailed data will fully identify what Linux + * is actually present. * * Side effects: * None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/rpcChannel/bdoorChannel.c new/open-vm-tools-11.1.5-16724464/lib/rpcChannel/bdoorChannel.c --- old/open-vm-tools-11.1.0-16036546/lib/rpcChannel/bdoorChannel.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/rpcChannel/bdoorChannel.c 2020-08-10 15:51:36.000000000 +0200 @@ -54,19 +54,25 @@ static gboolean BkdoorChannelStart(RpcChannel *chan) { - gboolean ret = TRUE; + gboolean ret; BackdoorChannel *bdoor = chan->_private; #if defined(NEED_RPCIN) - ret = chan->in == NULL || chan->inStarted; - if (ret) { - ret = RpcOut_start(bdoor->out); - if (!ret) { - if (chan->inStarted) { - RpcIn_stop(chan->in); - chan->inStarted = FALSE; - } - } + /* + * If the RpcIn channel exists, it should have been started before + * calling this routine. + */ + ASSERT(chan->in == NULL || chan->inStarted); + + ret = RpcOut_start(bdoor->out); + if (!ret && chan->in != NULL) { + /* + * If the output channel failed to start, stop the input channel + * if there is one. + */ + + RpcIn_stop(chan->in); + chan->inStarted = FALSE; } #else ret = RpcOut_start(bdoor->out); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/rpcChannel/simpleSocket.c new/open-vm-tools-11.1.5-16724464/lib/rpcChannel/simpleSocket.c --- old/open-vm-tools-11.1.0-16036546/lib/rpcChannel/simpleSocket.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/rpcChannel/simpleSocket.c 2020-08-10 15:51:36.000000000 +0200 @@ -346,6 +346,7 @@ ApiError apiErr; int vsockDev = -1; int family = VMCISock_GetAFValueFd(&vsockDev); + int retryCount = 0; if (family == -1) { Warning(LGPFX "Couldn't get VMCI socket family info."); @@ -376,8 +377,6 @@ /* We are required to use a privileged source port. */ localPort = PRIVILEGED_PORT_MAX; while (localPort >= PRIVILEGED_PORT_MIN) { - int retryCount = 0; - fd = SocketConnectVmciInternal(&addr, localPort, &apiErr, &sysErr); if (fd != INVALID_SOCKET) { goto done; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/lib/user/utilBacktrace.c new/open-vm-tools-11.1.5-16724464/lib/user/utilBacktrace.c --- old/open-vm-tools-11.1.0-16036546/lib/user/utilBacktrace.c 2020-04-15 07:05:45.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/lib/user/utilBacktrace.c 2020-08-10 15:51:58.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2013-2019 VMware, Inc. All rights reserved. + * Copyright (C) 2013-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -343,7 +343,8 @@ i, x[0], x[1], dli.dli_sname, dli.dli_fname, dli.dli_fbase); } else { - outFunc(outFuncData, "SymBacktrace[%d] %#08x eip %#08x \n", i, x[0], x[1]); + outFunc(outFuncData, "SymBacktrace[%d] %#08x eip %#08x \n", i, x[0], + x[1]); } x = (uintptr_t *) x[0]; } @@ -394,6 +395,7 @@ *----------------------------------------------------------------------------- */ + void Util_BacktraceWithFunc(int bugNr, // IN: Util_OutputFunc outFunc, // IN: @@ -413,7 +415,7 @@ if (bugNr == 0) { outFunc(outFuncData, "Backtrace:\n"); } else { - outFunc(outFuncData, "Backtrace for bugNr=%d\n",bugNr); + outFunc(outFuncData, "Backtrace for bugNr=%d\n", bugNr); } frames = backtrace(callstack, ARRAYSIZE(callstack)); for (i = 0; i < frames; i++) { @@ -431,13 +433,14 @@ } } #else - uintptr_t *x = (uintptr_t *) &bugNr; - if (bugNr == 0) { outFunc(outFuncData, "Backtrace:\n"); } else { - outFunc(outFuncData, "Backtrace for bugNr=%d\n",bugNr); + outFunc(outFuncData, "Backtrace for bugNr=%d\n", bugNr); } - UtilBacktraceFromPointerWithFunc(&x[-2], outFunc, outFuncData); + + UtilBacktraceFromPointerWithFunc(__builtin_frame_address(0), outFunc, + outFuncData); #endif } + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/libguestlib/vmGuestLib.c new/open-vm-tools-11.1.5-16724464/libguestlib/vmGuestLib.c --- old/open-vm-tools-11.1.0-16036546/libguestlib/vmGuestLib.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/libguestlib/vmGuestLib.c 2020-08-10 15:51:36.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2005-2016,2019 VMware, Inc. All rights reserved. + * Copyright (C) 2005-2016,2019-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -40,7 +40,7 @@ #define GUESTLIB_NAME "VMware Guest API" -/* +/* * These are client side data structures, separate from the wire data formats * (VMGuestLibDataV[23]). */ @@ -60,7 +60,7 @@ * Statistics. * * dataSize is the size of the buffer pointed to by 'data'. - * For v2 protocol: + * For v2 protocol: * - 'data' points to VMGuestLibDataV2 struct, * For v3 protocol: * - 'data' points to VMGuestLibStatisticsV3 struct. @@ -353,7 +353,7 @@ VMGuestLibError ret = VMGUESTLIB_ERROR_INVALID_ARG; uint32 hostVersion = HANDLE_VERSION(handle); - /* + /* * Starting with the highest supported protocol (major) version, negotiate * down to the highest host supported version. Host supports minimum version * 2. @@ -395,15 +395,20 @@ break; } - /* - * Host is older and doesn't support the requested protocol version. - * Request the highest version the host supports. - */ Debug("Failed to retrieve info: %s\n", reply ? reply : "NULL"); - if (hostVersion == 2 || + /* + * See why the request failed and either attempt a recovery action or + * set an appropriate error code. If the problem is that the host + * is older and doesn't support the requested protocol version, then + * try to determine the highest version the host supports and use that. + */ + if (reply == NULL) { + ret = VMGUESTLIB_ERROR_OTHER; + break; + } else if (hostVersion == 2 || Str_Strncmp(reply, "Unknown command", sizeof "Unknown command") == 0) { - /* + /* * Host does not support this feature. Older (v2) host would return * "Unsupported version" if it doesn't recognize the requested version. * @@ -414,18 +419,18 @@ break; } else if (hostVersion == 3) { /* - * Host supports v2 at a minimum. If request for v3 fails, then just use - * v2, since v2 host does not send the highest supported version in the - * reply. + * Host supports v2 at a minimum. If request for v3 fails, then just + * use v2, since v2 host does not send the highest supported version + * in the reply. */ hostVersion = 2; HANDLE_SESSIONID(handle) = 0; continue; } else if (!StrUtil_GetNextUintToken(&hostVersion, &index, reply, ":")) { /* - * v3 and onwards, the host returns the highest major version it supports, - * if the requested version is not supported. So parse out the host - * version from the reply and return error if it didn't. + * v3 and onwards, the host returns the highest major version it + * supports, if the requested version is not supported. So parse + * out the host version from the reply and return error if it didn't. */ Debug("Bad reply received from host.\n"); ret = VMGUESTLIB_ERROR_OTHER; @@ -499,7 +504,7 @@ HANDLE_VERSION(handle) = v3reply->hdr.version; HANDLE_SESSIONID(handle) = v3reply->hdr.sessionId; - /* + /* * 1. Retrieve the length of the statistics array from the XDR encoded * part of the reply. */ @@ -510,7 +515,7 @@ goto done; } if (count >= GUESTLIB_MAX_STATISTIC_ID) { - /* + /* * Host has more than we can process. So process only what this side * can. */ @@ -544,7 +549,7 @@ if (count >= v3stats->numStats) { ret = VMGUESTLIB_ERROR_SUCCESS; } else { - /* + /* * Error while unmarshalling. Deep-free already unmarshalled * statistics and invalidate the data in the handle. */ @@ -670,7 +675,7 @@ VMGuestLibStatisticsV3 *stats = HANDLE_DATA(handle); uint32 statIdx = statId - 1; - /* + /* * Check that the requested statistic is supported by the host. V3 host sends * all the available statistics, in order. So any statistics that were added * to this version of guestlib, but unsupported by the host, would not be diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/libvmtools/vmtoolsLog.c new/open-vm-tools-11.1.5-16724464/libvmtools/vmtoolsLog.c --- old/open-vm-tools-11.1.0-16036546/libvmtools/vmtoolsLog.c 2020-04-15 07:05:00.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/libvmtools/vmtoolsLog.c 2020-08-10 15:51:04.000000000 +0200 @@ -1512,8 +1512,17 @@ /* If needed, restore the old configuration. */ if (!reset) { if (oldDomains != NULL) { + guint i; + for (i = 0; i < oldDomains->len; i++) { + LogHandler *old = g_ptr_array_index(oldDomains, i); + CLEAR_LOG_HANDLER(old); + } g_ptr_array_free(oldDomains, TRUE); } + if (oldDefault != NULL && oldDefault != gDefaultData) { + CLEAR_LOG_HANDLER(oldDefault); + oldDefault = NULL; + } } /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/appInfo/appInfo.c new/open-vm-tools-11.1.5-16724464/services/plugins/appInfo/appInfo.c --- old/open-vm-tools-11.1.0-16036546/services/plugins/appInfo/appInfo.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/appInfo/appInfo.c 2020-08-10 15:51:36.000000000 +0200 @@ -38,6 +38,7 @@ #include "util.h" #include "vm_atomic.h" #include "vmcheck.h" +#include "vmware/guestrpc/tclodefs.h" #include "vmware/tools/log.h" #include "vmware/tools/threadPool.h" #include "vmware/tools/utils.h" @@ -89,11 +90,16 @@ static guint gAppInfoPollInterval = 0; /** + * Defines the state of the App Info at the host side. + */ +static gboolean gAppInfoEnabledInHost = TRUE; + +/** * AppInfo gather loop timeout source. */ static GSource *gAppInfoTimeoutSource = NULL; -static void TweakGatherLoop(ToolsAppCtx *ctx); +static void TweakGatherLoop(ToolsAppCtx *ctx, gboolean force); /* @@ -415,7 +421,7 @@ "information\n", __FUNCTION__); } - TweakGatherLoop(ctx); + TweakGatherLoop(ctx, TRUE); return G_SOURCE_REMOVE; } @@ -483,12 +489,16 @@ * AppInfo Gather loop timeout source. * * @param[in] ctx The application context. + * @param[in] force If set to TRUE, the poll loop will be + * tweaked even if the poll interval hasn't + * changed from the previous value. * ***************************************************************************** */ static void -TweakGatherLoop(ToolsAppCtx *ctx) // IN +TweakGatherLoop(ToolsAppCtx *ctx, // IN + gboolean force) // IN { gboolean disabled = VMTools_ConfigGetBoolean(ctx->config, @@ -496,9 +506,9 @@ CONFNAME_APPINFO_DISABLED, APP_INFO_CONF_DEFAULT_DISABLED_VALUE); - gint pollInterval = 0; + gint pollInterval; - if (!disabled) { + if (gAppInfoEnabledInHost && !disabled) { pollInterval = VMTools_ConfigGetInteger(ctx->config, CONFGROUPNAME_APPINFO, CONFNAME_APPINFO_POLLINTERVAL, @@ -509,13 +519,17 @@ __FUNCTION__, pollInterval, APP_INFO_POLL_INTERVAL); pollInterval = APP_INFO_POLL_INTERVAL; } + } else { + pollInterval = 0; } - /* - * pollInterval can never be a negative value. Typecasting into - * guint should not be a problem. - */ - TweakGatherLoopEx(ctx, (guint) pollInterval); + if (force || (gAppInfoPollInterval != pollInterval)) { + /* + * pollInterval can never be a negative value. Typecasting into + * guint should not be a problem. + */ + TweakGatherLoopEx(ctx, (guint) pollInterval); + } } @@ -539,7 +553,7 @@ { g_info("%s: Reloading the tools configuration.\n", __FUNCTION__); - TweakGatherLoop(ctx); + TweakGatherLoop(ctx, FALSE); } @@ -571,6 +585,58 @@ /* + *---------------------------------------------------------------------------- + * + * AppInfoServerSetOption -- + * + * Handle TOOLSOPTION_ENABLE_APPINFO Set_Option callback. + * + * @param[in] src The source object. + * @param[in] ctx The app context. + * @param[in] option Option being set. + * @param[in] value Option value. + * @param[in] plugin Plugin registration data. + * + * @return TRUE if the specified option is TOOLSOPTION_ENABLE_APPINFO and + * the AppInfo Gather poll loop is reconfigured. + * FALSE if the specified option is not TOOLSOPTION_ENABLE_APPINFO + * or AppInfo Gather poll loop is not reconfigured. + *---------------------------------------------------------------------------- + */ + +static gboolean +AppInfoServerSetOption(gpointer src, // IN + ToolsAppCtx *ctx, // IN + const gchar *option, // IN + const gchar *value, // IN + gpointer data) // IN +{ + gboolean retVal = FALSE; + + if (strcmp(option, TOOLSOPTION_ENABLE_APPINFO) == 0) { + g_debug("%s: Tools set option %s=%s.\n", + __FUNCTION__, TOOLSOPTION_ENABLE_APPINFO, value); + + if (strcmp(value, "1") == 0 && !gAppInfoEnabledInHost) { + gAppInfoEnabledInHost = TRUE; + retVal = TRUE; + } else if (strcmp(value, "0") == 0 && gAppInfoEnabledInHost) { + gAppInfoEnabledInHost = FALSE; + retVal = TRUE; + } + + if (retVal) { + g_info("%s: State of AppInfo is changed to '%s' at host side.\n", + __FUNCTION__, gAppInfoEnabledInHost ? "enabled" : "disabled"); + TweakGatherLoop(ctx, TRUE); + } + } + + return retVal; +} + + +/* ****************************************************************************** * AppInfoServerReset -- * @@ -625,7 +691,18 @@ TweakGatherLoopEx(ctx, interval); } else { - g_debug("%s: Poll loop disabled. Ignoring.\n", __FUNCTION__); + /* + * Channel got reset. VM might have vMotioned to an older host + * that doesn't send the 'Set_Option enableAppInfo'. + * Set gAppInfoEnabledInHost to TRUE and tweak the gather loop. + * Else, the application information may never be captured. + */ + if (!gAppInfoEnabledInHost) { + gAppInfoEnabledInHost = TRUE; + TweakGatherLoop(ctx, TRUE); + } else { + g_debug("%s: Poll loop disabled. Ignoring.\n", __FUNCTION__); + } } } @@ -677,7 +754,8 @@ ToolsPluginSignalCb sigs[] = { { TOOLS_CORE_SIG_CONF_RELOAD, AppInfoServerConfReload, NULL }, { TOOLS_CORE_SIG_SHUTDOWN, AppInfoServerShutdown, NULL }, - { TOOLS_CORE_SIG_RESET, AppInfoServerReset, NULL } + { TOOLS_CORE_SIG_RESET, AppInfoServerReset, NULL }, + { TOOLS_CORE_SIG_SET_OPTION, AppInfoServerSetOption, NULL } }; ToolsAppReg regs[] = { { TOOLS_APP_SIGNALS, @@ -692,7 +770,7 @@ /* * Set up the AppInfo gather loop. */ - TweakGatherLoop(ctx); + TweakGatherLoop(ctx, TRUE); return ®Data; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/dndcp/copyPasteUIX11.cpp new/open-vm-tools-11.1.5-16724464/services/plugins/dndcp/copyPasteUIX11.cpp --- old/open-vm-tools-11.1.0-16036546/services/plugins/dndcp/copyPasteUIX11.cpp 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/dndcp/copyPasteUIX11.cpp 2020-08-10 15:51:36.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2009-2019 VMware, Inc. All rights reserved. + * Copyright (C) 2009-2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -97,14 +97,6 @@ GdkAtom GDK_SELECTION_CLIPBOARD; #endif -#ifndef GDK_SELECTION_TYPE_TIMESTAMP -GdkAtom GDK_SELECTION_TYPE_TIMESTAMP; -#endif - -#ifndef GDK_SELECTION_TYPE_UTF8_STRING -GdkAtom GDK_SELECTION_TYPE_UTF8_STRING; -#endif - /* *----------------------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-connection-info.sh new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-connection-info.sh --- old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-connection-info.sh 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-connection-info.sh 2020-08-10 15:51:05.000000000 +0200 @@ -1,16 +1,16 @@ #!/bin/sh # check if necesary commands exist -command -v netstat >/dev/null 2>&1 || { echo >&2 "netstat doesn't exist"; exit 1; } +command -v ss >/dev/null 2>&1 || { echo >&2 "ss doesn't exist"; exit 1; } command -v grep >/dev/null 2>&1 || { echo >&2 "grep doesn't exist"; exit 1; } command -v sort >/dev/null 2>&1 || { echo >&2 "sort doesn't exist"; exit 1; } command -v tr >/dev/null 2>&1 || { echo >&2 "tr doesn't exist"; exit 1; } # get pids of listening processes -space_separated_pids=$(netstat -lntup | grep -Eo "[0-9]+/" | sort -u) +space_separated_pids=$(ss -lntup | grep -Eo "pid=[0-9]+" | sort -u) # grep pattern pattern=$(echo $space_separated_pids | tr ' ' '|') # get matching lines -netstat -antup | grep -E $pattern +ss -antup | grep -E $pattern diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-listening-process-info.sh new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-listening-process-info.sh --- old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-listening-process-info.sh 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-listening-process-info.sh 2020-08-10 15:51:05.000000000 +0200 @@ -1,14 +1,14 @@ #!/bin/sh # check if necesary commands exist -command -v netstat >/dev/null 2>&1 || { echo >&2 "netstat doesn't exist"; exit 1; } +command -v ss >/dev/null 2>&1 || { echo >&2 "ss doesn't exist"; exit 1; } command -v grep >/dev/null 2>&1 || { echo >&2 "grep doesn't exist"; exit 1; } command -v sort >/dev/null 2>&1 || { echo >&2 "sort doesn't exist"; exit 1; } command -v tr >/dev/null 2>&1 || { echo >&2 "tr doesn't exist"; exit 1; } command -v ps >/dev/null 2>&1 || { echo >&2 "ps doesn't exist"; exit 1; } # get pids of listening processes -space_separated_pids=$(netstat -lntup | grep -Eo "[0-9]+/" | grep -Eo "[0-9]*" | sort -u) +space_separated_pids=$(ss -lntup | grep -Eo "pid=[0-9]+" | grep -Eo "[0-9]*" | sort -u) # ps accepts comma separated pids comma_separated_pids=$(echo $space_separated_pids | tr ' ' ',') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-listening-process-perf-metrics.sh new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-listening-process-perf-metrics.sh --- old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-listening-process-perf-metrics.sh 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-listening-process-perf-metrics.sh 2020-08-10 15:51:05.000000000 +0200 @@ -1,7 +1,7 @@ #!/bin/sh # check if necesary commands exist -command -v netstat >/dev/null 2>&1 || { echo >&2 "netstat doesn't exist"; exit 1; } +command -v ss >/dev/null 2>&1 || { echo >&2 "ss doesn't exist"; exit 1; } command -v grep >/dev/null 2>&1 || { echo >&2 "grep doesn't exist"; exit 1; } command -v sort >/dev/null 2>&1 || { echo >&2 "sort doesn't exist"; exit 1; } command -v awk >/dev/null 2>&1 || { echo >&2 "awk doesn't exist"; exit 1; } @@ -108,6 +108,6 @@ run $pids } -space_separated_pids=$(netstat -lntup | grep -Eo "[0-9]+/" | grep -Eo "[0-9]+" | sort -u) +space_separated_pids=$(ss -lntup | grep -Eo "pid=[0-9]+" | grep -Eo "[0-9]+" | sort -u) get_performance_metrics $space_separated_pids \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-versions.sh new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-versions.sh --- old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/get-versions.sh 2020-04-15 07:05:01.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/get-versions.sh 2020-08-10 15:51:05.000000000 +0200 @@ -1,12 +1,12 @@ #!/bin/sh # check if necesary commands exist -command -v netstat >/dev/null 2>&1 || { echo >&2 "netstat doesn't exist"; exit 1; } +command -v ss >/dev/null 2>&1 || { echo >&2 "ss doesn't exist"; exit 1; } command -v grep >/dev/null 2>&1 || { echo >&2 "grep doesn't exist"; exit 1; } command -v sort >/dev/null 2>&1 || { echo >&2 "sort doesn't exist"; exit 1; } command -v ps >/dev/null 2>&1 || { echo >&2 "ps doesn't exist"; exit 1; } -space_separated_pids=$(netstat -lntup | grep -Eo "[0-9]+/" | grep -Eo "[0-9]*" | sort -u) +space_separated_pids=$(ss -lntup | grep -Eo "pid=[0-9]+" | grep -Eo "[0-9]*" | sort -u) get_command_line() { ps --pid $1 -o command @@ -23,7 +23,7 @@ } get_vcops_version() { - cat $ALIVE_BASE/user/conf/lastbuildversion.txt 2>/dev/null + cat /usr/lib/vmware-vcops/user/conf/lastbuildversion.txt 2>/dev/null } get_srm_mgt_server_version() { @@ -76,10 +76,15 @@ db2level 2>/dev/null | grep "DB2 v" } +get_tcserver_version() { + command -v tcserver >/dev/null 2>&1 && { tcserver version 2>/dev/null; } +} + echo VERSIONSTART "vcops_version" "$(get_vcops_version)" VERSIONEND echo VERSIONSTART "srm_mgt_server_version" "$(get_srm_mgt_server_version)" VERSIONEND echo VERSIONSTART "vcenter_appliance_version" "$(get_vcenter_appliance_version)" VERSIONEND echo VERSIONSTART "db2_version" "$(get_db2_version)" VERSIONEND +echo VERSIONSTART "tcserver_version" "$(get_tcserver_version)" VERSIONEND get_version "/\S+/(httpd-prefork|httpd|httpd2-prefork)($|\s)" -v get_version "/usr/(bin|sbin)/apache\S*" -v diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/serviceDiscovery.c new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/serviceDiscovery.c --- old/open-vm-tools-11.1.0-16036546/services/plugins/serviceDiscovery/serviceDiscovery.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/services/plugins/serviceDiscovery/serviceDiscovery.c 2020-08-10 15:51:36.000000000 +0200 @@ -128,6 +128,11 @@ */ #define SERVICE_DISCOVERY_RPC_WAIT_TIME 100 +/* + * Maximum number of keys that can be deleted by one operation + */ +#define SERVICE_DISCOVERY_DELETE_CHUNK_SIZE 25 + typedef struct { gchar *keyName; @@ -381,9 +386,9 @@ status = SendRpcMessage(ctx, DynBuf_Get(&buf), DynBuf_GetSize(&buf), resultData, resultDataLen); if (!status) { - g_warning("%s: Read over RPC failed, result: %s, resultDataLen: %" FMTSZ - "u\n", __FUNCTION__, (*resultData != NULL) ? - *resultData : "(null)", *resultDataLen); + g_debug("%s: Read over RPC failed, result: %s, resultDataLen: %" FMTSZ + "u\n", __FUNCTION__, (*resultData != NULL) ? + *resultData : "(null)", *resultDataLen); } done: DynBuf_Destroy(&buf); @@ -395,22 +400,104 @@ ***************************************************************************** * DeleteData -- * - * Deletes key/value from Namespace DB. + * Deletes keys/values from Namespace DB. * * @param[in] ctx Application context. - * @param[in] key Key of entry to be deleted from the Namespace DB + * @param[in] keys Keys of entries to be deleted from the Namespace DB * * @retval TRUE Namespace DB delete over RPC succeeded. - * @retval FALSE Namespace DB delete over RPC failed. + * @retval FALSE Namespace DB delete over RPC failed or command buffer has not + * been constructed correctly. * ***************************************************************************** */ static Bool DeleteData(ToolsAppCtx *ctx, - const char *key) + const GPtrArray* keys) { - return WriteData(ctx, key, NULL, 0); + Bool status = FALSE; + DynBuf buf; + int i; + gchar *numKeys = g_strdup_printf("%d", keys->len); + + DynBuf_Init(&buf); + + /* + * Format is: + * + * namespace-set-keys <namespace>\0<numOps>\0<op>\0<key>\0<value>\0<oldVal> + * + */ + if (!DynBuf_Append(&buf, NSDB_PRIV_SET_KEYS_CMD, + strlen(NSDB_PRIV_SET_KEYS_CMD)) || + !DynBuf_Append(&buf, " ", 1) || + !DynBuf_AppendString(&buf, SERVICE_DISCOVERY_NAMESPACE_DB_NAME) || + !DynBuf_AppendString(&buf, numKeys)) { // numOps + g_warning("%s: Could not construct buffer header\n", __FUNCTION__); + goto out; + } + for (i = 0; i < keys->len; ++i) { + const char *key = (const char *) g_ptr_array_index(keys, i); + g_debug("%s: Adding key %s to buffer\n", __FUNCTION__, key); + if (!DynBuf_AppendString(&buf, "0") || + !DynBuf_AppendString(&buf, key) || + !DynBuf_Append(&buf, "", 1) || + !DynBuf_Append(&buf, "", 1)) { + g_warning("%s: Could not construct delete buffer\n", __FUNCTION__); + goto out; + } + } + if (!DynBuf_Append(&buf, "", 1)) { + g_warning("%s: Could not construct buffer footer\n", __FUNCTION__); + goto out; + } else { + char *result = NULL; + size_t resultLen; + + status = SendRpcMessage(ctx, DynBuf_Get(&buf), DynBuf_GetSize(&buf), + &result, &resultLen); + if (!status) { + g_warning("%s: Failed to delete keys, result: %s resultLen: %" FMTSZ + "u\n", __FUNCTION__, (result != NULL) ? result : "(null)", + resultLen); + } + + free(result); + } + +out: + DynBuf_Destroy(&buf); + g_free(numKeys); + return status; +} + + +/* + ***************************************************************************** + * DeleteDataAndFree -- + * + * Deletes the specified keys in Namespace DB and frees memory + * for every key. + * + * @param[in] ctx Application context. + * @param[in/out] keys Keys to be deleted. + * + ***************************************************************************** + */ + +static void +DeleteDataAndFree(ToolsAppCtx *ctx, + GPtrArray *keys) { + int j; + + if (!DeleteData(ctx, keys)) { + g_warning("%s: Failed to delete data\n", __FUNCTION__); + } + for (j = 0; j < keys->len; ++j) { + g_free((gchar *) g_ptr_array_index(keys, j)); + } + g_ptr_array_set_size(keys, 0); } @@ -428,6 +515,7 @@ static void CleanupNamespaceDB(ToolsAppCtx *ctx) { int i; + GPtrArray *keys = g_ptr_array_new(); g_debug("%s: Performing cleanup of previous data\n", __FUNCTION__); @@ -445,12 +533,9 @@ char *token = NULL; g_debug("%s: Read %s from Namespace DB\n", __FUNCTION__, value); - /* - * Delete this key anyways, afterwards check for chunks - */ - if (!DeleteData(ctx, tmp.keyName)) { - g_warning("%s: Not able to delete entry %s", __FUNCTION__, - tmp.keyName); + g_ptr_array_add(keys, g_strdup(tmp.keyName)); + if (keys->len >= SERVICE_DISCOVERY_DELETE_CHUNK_SIZE) { + DeleteDataAndFree(ctx, keys); } if (NULL == strtok(value, ",")) { @@ -466,16 +551,13 @@ if (token != NULL) { int count = (int) g_ascii_strtoll(token, NULL, 10); int j; - gchar *msg = NULL; for (j = 0; j < count; j++) { - msg = g_strdup_printf("%s-%d", tmp.keyName, j + 1); - g_debug("%s: Deleting entry %s",__FUNCTION__, msg); - if (!DeleteData(ctx, msg)) { - g_warning("%s: Not able to delete entry %s", - __FUNCTION__, msg); + gchar *msg = g_strdup_printf("%s-%d", tmp.keyName, j + 1); + g_ptr_array_add(keys, msg); + if (keys->len >= SERVICE_DISCOVERY_DELETE_CHUNK_SIZE) { + DeleteDataAndFree(ctx, keys); } - g_free(msg); } } else { g_warning("%s: Chunk count has invalid value %s", __FUNCTION__, @@ -485,12 +567,15 @@ g_warning("%s: Key %s not found in Namespace DB\n", __FUNCTION__, tmp.keyName); } - if (value) { free(value); value = NULL; } } + if (keys->len >= 1) { + DeleteDataAndFree(ctx, keys); + } + g_ptr_array_free(keys, TRUE); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-vm-tools-11.1.0-16036546/vgauth/common/prefs.c new/open-vm-tools-11.1.5-16724464/vgauth/common/prefs.c --- old/open-vm-tools-11.1.0-16036546/vgauth/common/prefs.c 2020-04-15 07:05:25.000000000 +0200 +++ new/open-vm-tools-11.1.5-16724464/vgauth/common/prefs.c 2020-08-10 15:51:36.000000000 +0200 @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2011-2016 VMware, Inc. All rights reserved. + * Copyright (C) 2011-2016,2020 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -264,7 +264,7 @@ groupNames[i], &numKeys, &gErr); - if ((NULL == keyNames) && (NULL != gErr)) { + if (NULL != gErr) { g_warning("%s: g_key_file_get_keys(%s) failed: %s\n", __FUNCTION__, groupNames[i], gErr->message); g_error_free(gErr);