File fix-char-range.patch of Package paho-mqtt-c
From bba72469721fd3c7628fda61e3081f802fe73907 Mon Sep 17 00:00:00 2001
From: Ian Craggs <icraggs@gmail.com>
Date: Mon, 17 Feb 2025 18:51:13 +0000
Subject: [PATCH] Ensure argument for isprint and isxdigit is in the correct
range #1565
---
src/MQTTPacket.c | 4 ++--
src/MQTTVersion.c | 4 ++--
src/Proxy.c | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/MQTTPacket.c b/src/MQTTPacket.c
index 40cb4d415..a67c92041 100644
--- a/src/MQTTPacket.c
+++ b/src/MQTTPacket.c
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2024 IBM Corp. and Ian Craggs
+ * Copyright (c) 2009, 2025 IBM Corp. and Ian Craggs
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
@@ -860,7 +860,7 @@ int MQTTPacket_formatPayload(int buflen, char* buf, int payloadlen, char* payloa
for (i = 0; i < payloadlen; i++)
{
- if (isprint(payload[i]))
+ if (isprint((unsigned char)payload[i]))
{
if (pos >= buflen)
break;
diff --git a/src/MQTTVersion.c b/src/MQTTVersion.c
index 92cd020c1..bba9708de 100644
--- a/src/MQTTVersion.c
+++ b/src/MQTTVersion.c
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2020 IBM Corp.
+ * Copyright (c) 2012, 2025 IBM Corp.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
@@ -96,7 +96,7 @@ char* FindString(char* filename, const char* eyecatcher_input)
char* ptr = value;
c = fgetc(infile); /* skip space */
c = fgetc(infile);
- while (isprint(c))
+ while (isprint((unsigned char)c))
{
*ptr++ = c;
c = fgetc(infile);
diff --git a/src/Proxy.c b/src/Proxy.c
index bb9ad6826..60769f59b 100644
--- a/src/Proxy.c
+++ b/src/Proxy.c
@@ -272,7 +272,7 @@ void Proxy_specialChars(char* p0, char* p1, b64_size_t *basic_auth_in_len)
{
*p0++ = *p1++;
}
- else if (isxdigit(*(p1 + 1)) && isxdigit(*(p1 + 2)))
+ else if (isxdigit((unsigned char)*(p1 + 1)) && isxdigit((unsigned char)*(p1 + 2)))
{
/* next 2 characters are hexa digits */
char hex[3];
@@ -350,4 +350,4 @@ int Proxy_setHTTPProxy(Clients* aClient, char* source, char** dest, char** auth_
}
exit:
return rc;
-}
\ No newline at end of file
+}