open-vm-tools: backport patch to build with glibc 2.43

As the subject says.

Fixes error:
| ../../../sources/open-vm-tools-13.0.10/open-vm-tools/lib/hgfs/hgfsEscape.c: In function 'HgfsAddEscapeCharacter':
| ../../../sources/open-vm-tools-13.0.10/open-vm-tools/lib/hgfs/hgfsEscape.c:201:15: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
|   201 |       illegal = strchr(HGFS_ILLEGAL_CHARS, bufIn[escapeContext->processedOffset]);

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Gyorgy Sarvari 2026-03-19 12:47:42 +01:00 committed by Khem Raj
parent fdfa50cf77
commit 52213f71f0
No known key found for this signature in database
GPG Key ID: BB053355919D3314
2 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,144 @@
From 070500fd0e97abb07585882ae448ac35b1c4396c Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Mon, 26 Jan 2026 11:55:03 +0000
Subject: [PATCH] fix initialization discards 'const' qualifier from pointer
target type
Since glibc-2.43:
For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
pointers into their input arrays now have definitions as macros that
return a pointer to a const-qualified type when the input argument is
a pointer to a const-qualified type.
https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
Upstream-Status: Submitted [https://github.com/vmware/open-vm-tools/pull/783]
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
open-vm-tools/lib/hgfs/hgfsEscape.c | 6 +++---
open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 2 +-
open-vm-tools/lib/misc/strutil.c | 7 ++++---
open-vm-tools/lib/nicInfo/nicInfoPosix.c | 2 +-
open-vm-tools/libvmtools/i18n.c | 2 +-
open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
6 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/open-vm-tools/lib/hgfs/hgfsEscape.c b/open-vm-tools/lib/hgfs/hgfsEscape.c
index c4d39b12d..212ea1c79 100644
--- a/open-vm-tools/lib/hgfs/hgfsEscape.c
+++ b/open-vm-tools/lib/hgfs/hgfsEscape.c
@@ -175,7 +175,7 @@ HgfsAddEscapeCharacter(char const * bufIn, // IN: input name
HgfsEscapeContext *escapeContext = (HgfsEscapeContext *)context;
uint32 charactersToCopy;
uint32 outputSpace;
- char* illegal;
+ const char* illegal;
Bool result = TRUE;
ASSERT(offset >= escapeContext->processedOffset); // Scanning forward
@@ -573,7 +573,7 @@ HgfsIsEscapeSequence(char const *bufIn, // IN: input name
uint32 length) // IN: length of the name in characters
{
if (bufIn[offset] == HGFS_ESCAPE_CHAR && offset > 0) {
- char *substitute;
+ const char *substitute;
if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR && offset > 1) {
/*
* Possibly a valid sequence, check it must be preceded with a substitute
@@ -887,7 +887,7 @@ HgfsEscapeUndoComponent(char *bufIn, // IN: Characters to be unesc
size_t offset = escapePointer - bufIn;
if (HgfsIsEscapeSequence(bufIn, offset, sizeIn)) {
- char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
+ const char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
if (substitute != NULL) {
bufIn[offset - 1] = HGFS_ILLEGAL_CHARS[substitute - HGFS_SUBSTITUTE_CHARS];
} else if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR) {
diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
index 445a53881..eeabcadd4 100644
--- a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+++ b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
@@ -1366,7 +1366,7 @@ static void
HgfsGetHiddenAttr(char const *fileName, // IN: Input filename
HgfsFileAttrInfo *attr) // OUT: Struct to copy into
{
- char *baseName;
+ const char *baseName;
ASSERT(fileName);
ASSERT(attr);
diff --git a/open-vm-tools/lib/misc/strutil.c b/open-vm-tools/lib/misc/strutil.c
index 4fc6502e4..4be63b7b8 100644
--- a/open-vm-tools/lib/misc/strutil.c
+++ b/open-vm-tools/lib/misc/strutil.c
@@ -1454,6 +1454,7 @@ StrUtil_ReplaceAll(const char *orig, // IN
char *result;
const char *current;
char *tmp;
+ const char *tmp2;
size_t lenWhat;
size_t lenWith;
size_t occurrences = 0;
@@ -1467,8 +1468,8 @@ StrUtil_ReplaceAll(const char *orig, // IN
lenWith = strlen(with);
current = orig;
- while ((tmp = strstr(current, what)) != NULL) {
- current = tmp + lenWhat;
+ while ((tmp2 = strstr(current, what)) != NULL) {
+ current = tmp2 + lenWhat;
++occurrences;
}
@@ -1695,7 +1696,7 @@ StrUtilHasListItem(char const *list, // IN:
char const *item, // IN:
int (*ncmp)(char const *, char const*, size_t)) // IN:
{
- char *foundDelim;
+ const char *foundDelim;
int itemLen = strlen(item);
if (list == NULL) {
diff --git a/open-vm-tools/lib/nicInfo/nicInfoPosix.c b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
index 6f20547b2..a387e377b 100644
--- a/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+++ b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
@@ -267,7 +267,7 @@ static Bool
IpEntryMatchesDevice(const char *devName,
const char *label)
{
- char *p;
+ const char *p;
size_t n;
if ((p = strchr(label, ':')) != NULL) {
diff --git a/open-vm-tools/libvmtools/i18n.c b/open-vm-tools/libvmtools/i18n.c
index 3085f72d7..f61406d14 100644
--- a/open-vm-tools/libvmtools/i18n.c
+++ b/open-vm-tools/libvmtools/i18n.c
@@ -698,7 +698,7 @@ VMTools_BindTextDomain(const char *domain,
* If we couldn't find the catalog file for the user's language, see if
* we can find a more generic language (e.g., for "en_US", also try "en").
*/
- char *sep = Str_Strrchr(lang, '_');
+ const char *sep = Str_Strrchr(lang, '_');
if (sep != NULL) {
if (usrlang == NULL) {
usrlang = Util_SafeStrdup(lang);
diff --git a/open-vm-tools/services/plugins/vix/vixTools.c b/open-vm-tools/services/plugins/vix/vixTools.c
index b2079a10d..6a8498ffb 100644
--- a/open-vm-tools/services/plugins/vix/vixTools.c
+++ b/open-vm-tools/services/plugins/vix/vixTools.c
@@ -925,7 +925,7 @@ VixToolsBuildUserEnvironmentTable(const char * const *envp) // IN: optional
for (; NULL != *envp; envp++) {
char *name;
char *value;
- char *whereToSplit;
+ const char *whereToSplit;
size_t nameLen;
whereToSplit = strchr(*envp, '=');

View File

@ -44,6 +44,7 @@ SRC_URI = "git://github.com/vmware/open-vm-tools.git;protocol=https;branch=maste
file://0013-open-vm-tools-Correct-include-path-for-poll.h.patch;patchdir=.. \
file://0014-timeSync-Portable-way-to-print-64bit-time_t.patch;patchdir=.. \
file://0001-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch;patchdir=.. \
file://0001-fix-initialization-discards-const-qualifier-from-poi.patch;patchdir=.. \
"
UPSTREAM_CHECK_GITTAGREGEX = "stable-(?P<pver>\d+(\.\d+)+)"